diff --git a/Modules/imgfile.c b/Modules/imgfile.c
index 4c452d6..8bf6d06 100644
--- a/Modules/imgfile.c
+++ b/Modules/imgfile.c
@@ -43,6 +43,15 @@
 static char gfname[1024];
 static IMAGE *image;
 
+static int error_called;
+
+static imgfile_error(str)
+    char *str;
+{
+    err_setstr(ImgfileError, str);
+    error_called = 1;
+    return;	/* To imglib, which will return a failure indictaor */
+}
 
 static
 imgfile_open(args)
@@ -52,13 +61,17 @@
     
     if ( !getargs(args, "s", &fname) )
       return 0;
+    i_seterror(imgfile_error);
+    error_called = 0;
     if ( image != NULL && strcmp(fname, gfname) != 0 ) {
 	iclose(image);
 	image = NULL;
 	gfname[0] = '\0';
     }
     if ( (image=iopen(fname, "r")) == NULL ) {
-	err_setstr(ImgfileError, "Cannot open image file");
+	/* Error may already be set by imgfile_error */
+	if ( !error_called )
+	  err_setstr(ImgfileError, "Cannot open image file");
 	return 0;
     }
     strcpy(gfname, fname);
@@ -103,7 +116,7 @@
       return NULL;
     cdatap = getstringvalue(rv);
     idatap = (long *)cdatap;
-    for ( y=0; y < ysize; y++ ) {
+    for ( y=0; y < ysize && !error_called; y++ ) {
 	if ( zsize == 1 ) {
 	    getrow(image, rs, y, 0);
 	    for(x=0; x<xsize; x++ )
@@ -118,6 +131,10 @@
 		         ((bs[x] & 0xff)<<16);
 	}
     }
+    if ( error_called ) {
+	DECREF(rv);
+	return NULL;
+    }
     return rv;
 }
 
