diff options
author | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2009-09-27 21:44:29 +0000 |
---|---|---|
committer | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2009-09-27 21:44:29 +0000 |
commit | 43939e66b1d4eeb2f3799c124f3598756755005a (patch) | |
tree | 15733092de55d52421a6ea02f5a43d5f8ff24393 /lib/fileio.c | |
parent | 49f4336c9bba33650573ba780b70bc501b38643e (diff) | |
download | netpbm-mirror-43939e66b1d4eeb2f3799c124f3598756755005a.tar.gz netpbm-mirror-43939e66b1d4eeb2f3799c124f3598756755005a.tar.xz netpbm-mirror-43939e66b1d4eeb2f3799c124f3598756755005a.zip |
Rebase Stable series to current Advanced: 10.47.04
git-svn-id: http://svn.code.sf.net/p/netpbm/code/stable@995 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'lib/fileio.c')
-rw-r--r-- | lib/fileio.c | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/lib/fileio.c b/lib/fileio.c index 01243f9d..300ae303 100644 --- a/lib/fileio.c +++ b/lib/fileio.c @@ -17,23 +17,23 @@ #include "fileio.h" char -pm_getc(FILE * const file) { +pm_getc(FILE * const fileP) { int ich; char ch; - ich = getc(file); + ich = getc(fileP); if (ich == EOF) pm_error("EOF / read error reading a byte"); ch = (char) ich; if (ch == '#') { do { - ich = getc(file); - if (ich == EOF) - pm_error("EOF / read error reading a byte"); - ch = (char) ich; - } while (ch != '\n' && ch != '\r'); - } + ich = getc(fileP); + if (ich == EOF) + pm_error("EOF / read error reading a byte"); + ch = (char) ich; + } while (ch != '\n' && ch != '\r'); + } return ch; } @@ -76,7 +76,7 @@ pm_getuint(FILE * const ifP) { do { ch = pm_getc(ifP); - } while (ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r'); + } while (ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r'); if (ch < '0' || ch > '9') pm_error("junk in file where an unsigned integer should be"); @@ -85,10 +85,18 @@ pm_getuint(FILE * const ifP) { do { unsigned int const digitVal = ch - '0'; - if (i > INT_MAX/10 - digitVal) + if (i > INT_MAX/10) pm_error("ASCII decimal integer in file is " "too large to be processed. "); - i = i * 10 + digitVal; + + i *= 10; + + if (i > INT_MAX - digitVal) + pm_error("ASCII decimal integer in file is " + "too large to be processed. "); + + i += digitVal; + ch = pm_getc(ifP); } while (ch >= '0' && ch <= '9'); @@ -165,6 +173,3 @@ pm_putraw(FILE * const file, pm_error("Error writing %d byte sample to file.", bytes); } } - - - |