diff options
author | Kim Woelders <kim@woelders.dk> | 2022-01-17 06:41:40 +0100 |
---|---|---|
committer | Kim Woelders <kim@woelders.dk> | 2022-01-18 20:44:26 +0100 |
commit | f4e8e1414ba1618a1ce602a308db9e315059acaa (patch) | |
tree | acb8e113e96dfc042ef1710f85c698e77b3c595b | |
parent | 10f692c9460d4c260a09222ec670d58bfe90c783 (diff) | |
download | imlib2-f4e8e1414ba1618a1ce602a308db9e315059acaa.tar.gz |
PNM loader: Fix P1 when spaces are omitted
-rw-r--r-- | src/modules/loaders/loader_pnm.c | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/src/modules/loaders/loader_pnm.c b/src/modules/loaders/loader_pnm.c index 93a5eaa..646f341 100644 --- a/src/modules/loaders/loader_pnm.c +++ b/src/modules/loaders/loader_pnm.c @@ -41,6 +41,31 @@ mm_getc(void) } static int +mm_get01(void) +{ + int ch; + + for (;;) + { + ch = mm_getc(); + switch (ch) + { + case '0': + return 0; + case '1': + return 1; + case ' ': + case '\t': + case '\r': + case '\n': + continue; + default: + return -1; + } + } +} + +static int mm_getu(unsigned int *pui) { int ch; @@ -187,15 +212,11 @@ load2(ImlibImage * im, int load_data) { for (x = 0; x < w; x++) { - if (mm_getu(&gval)) + i = mm_get01(); + if (i < 0) goto quit; - if (gval == 1) - *ptr2++ = 0xff000000; - else if (gval == 0) - *ptr2++ = 0xffffffff; - else - goto quit; + *ptr2++ = i ? 0xff000000 : 0xffffffff; } if (im->lc && __imlib_LoadProgressRows(im, y, 1)) |