From: Guido van Rossum Date: Mon, 23 Mar 1992 18:21:32 +0000 (+0000) Subject: Improved error handling. X-Git-Tag: v0.9.8~470 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3e94197a524fde94311e4dc9c076bb6047a02b57;p=thirdparty%2FPython%2Fcpython.git Improved error handling. --- diff --git a/Modules/imgfile.c b/Modules/imgfile.c index 4c452d656c95..8bf6d0642071 100644 --- a/Modules/imgfile.c +++ b/Modules/imgfile.c @@ -43,6 +43,15 @@ static object * ImgfileError; 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 @@ imgfile_open(args) 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 @@ imgfile_read(self, args) 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