From: Udi F. <udi...@us...> - 2011-03-01 03:38:38
|
Update of /cvsroot/ufraw/ufraw In directory vz-cvs-2.sog:/tmp/cvs-serv19544 Modified Files: dcraw.cc dcraw.h Log Message: Limit the number of dcraw IO errors to 10, fixing bug #3024370. Index: dcraw.cc =================================================================== RCS file: /cvsroot/ufraw/ufraw/dcraw.cc,v retrieving revision 1.239 retrieving revision 1.240 diff -u -d -r1.239 -r1.240 --- dcraw.cc 20 Feb 2011 06:00:08 -0000 1.239 +++ dcraw.cc 1 Mar 2011 03:38:35 -0000 1.240 @@ -143,6 +143,7 @@ ifpReadCount = 0; ifpSize = 0; ifpStepProgress = 0; +eofCount = 0; } CLASS ~DCRaw() @@ -168,10 +169,16 @@ size_t CLASS fread(void *ptr, size_t size, size_t nmemb, FILE *stream) { size_t num = ::fread(ptr, size, nmemb, stream); - if ( num != nmemb ) -// Maybe this should be a DCRAW_WARNING - dcraw_message(DCRAW_VERBOSE, "%s: fread %d != %d\n", - ifname_display, num, nmemb); + if ( num != nmemb ) { + if (eofCount < 10) + // Maybe this should be a DCRAW_WARNING + dcraw_message(DCRAW_VERBOSE, "%s: fread %d != %d\n", + ifname_display, num, nmemb); + if (eofCount == 10) + dcraw_message(DCRAW_VERBOSE, "%s: fread eof reached 10 times\n", + ifname_display); + eofCount++; + } if (stream==ifp) ifpProgress(size*nmemb); return num; } @@ -186,10 +193,16 @@ char *CLASS fgets(char *s, int size, FILE *stream) { char *str = ::fgets(s, size, stream); - if ( str==NULL ) -// Maybe this should be a DCRAW_WARNING - dcraw_message(DCRAW_VERBOSE, "%s: fgets returned NULL\n", - ifname_display); + if (str == NULL) { + if (eofCount < 10) + // Maybe this should be a DCRAW_WARNING + dcraw_message(DCRAW_VERBOSE, "%s: fgets returned NULL\n", + ifname_display); + if (eofCount == 10) + dcraw_message(DCRAW_VERBOSE, "%s: fgets eof reached 10 times\n", + ifname_display); + eofCount++; + } if (stream==ifp) ifpProgress(strlen(s)); return str; } Index: dcraw.h =================================================================== RCS file: /cvsroot/ufraw/ufraw/dcraw.h,v retrieving revision 1.68 retrieving revision 1.69 diff -u -d -r1.68 -r1.69 --- dcraw.h 20 Feb 2011 06:15:20 -0000 1.68 +++ dcraw.h 1 Mar 2011 03:38:35 -0000 1.69 @@ -94,6 +94,7 @@ unsigned ifpReadCount; unsigned ifpSize; unsigned ifpStepProgress; + int eofCount; #define STEPS 50 void ifpProgress(unsigned readCount); // Override standard io function for integrity checks and progress report |