summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKim Woelders <kim@woelders.dk>2022-01-17 06:41:40 +0100
committerKim Woelders <kim@woelders.dk>2022-01-18 20:44:26 +0100
commitf4e8e1414ba1618a1ce602a308db9e315059acaa (patch)
treeacb8e113e96dfc042ef1710f85c698e77b3c595b
parent10f692c9460d4c260a09222ec670d58bfe90c783 (diff)
downloadimlib2-f4e8e1414ba1618a1ce602a308db9e315059acaa.tar.gz
PNM loader: Fix P1 when spaces are omitted
-rw-r--r--src/modules/loaders/loader_pnm.c35
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))