diff options
Diffstat (limited to 'sys/src/libdraw/readimage.c')
| -rw-r--r-- | sys/src/libdraw/readimage.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/src/libdraw/readimage.c b/sys/src/libdraw/readimage.c index 3c80b4982..5745bad9b 100644 --- a/sys/src/libdraw/readimage.c +++ b/sys/src/libdraw/readimage.c @@ -19,8 +19,12 @@ readimage(Display *d, int fd, int dolock) if(readn(fd, hdr, 11) != 11) return nil; - if(memcmp(hdr, "compressed\n", 11) == 0) - return creadimage(d, fd, dolock); + if(memcmp(hdr, "compressed\n", 11) == 0){ + if(i = creadimage(d, fd, dolock)) + goto Done; + return nil; + } + if(readn(fd, hdr+11, 5*12-11) != 5*12-11) return nil; if(d) @@ -123,5 +127,7 @@ readimage(Display *d, int fd, int dolock) miny += dy; } free(tmp); + Done: + setmalloctag(i, getcallerpc(&d)); return i; } |
