diff options
author | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-01-11 23:18:22 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-01-11 23:18:22 +0100 |
commit | a426c08ce22b9f9b256ab028c223b362e2519361 (patch) | |
tree | 94c592d0aeb52872df2c3eb10f88c9a44558f8f8 /sys/src/libdraw | |
parent | 23b189c2bcf2de03902ef0f18e23cf030c6d072a (diff) |
libdraw: gengetwindow() fix mistake
dont zero *winp so the "screen" pointer is preserved.
Diffstat (limited to 'sys/src/libdraw')
-rw-r--r-- | sys/src/libdraw/init.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/sys/src/libdraw/init.c b/sys/src/libdraw/init.c index f7370e3b4..d5d97a980 100644 --- a/sys/src/libdraw/init.c +++ b/sys/src/libdraw/init.c @@ -147,13 +147,6 @@ retry: }else{ close(fd); buf[n] = '\0'; - if(*winp != nil){ - _freeimage1(*winp); - *winp = nil; - freeimage((*scrp)->image); - freescreen(*scrp); - *scrp = nil; - } image = namedimage(d, buf); if(image == 0){ /* @@ -166,6 +159,14 @@ retry: goto retry; } fprint(2, "namedimage %s failed: %r\n", buf); + } + if(*winp != nil){ + _freeimage1(*winp); + freeimage((*scrp)->image); + freescreen(*scrp); + *scrp = nil; + } + if(image == 0){ *winp = nil; d->screenimage = nil; return -1; @@ -176,9 +177,9 @@ retry: d->screenimage = image; *scrp = allocscreen(image, d->white, 0); if(*scrp == nil){ - freeimage(d->screenimage); *winp = nil; d->screenimage = nil; + freeimage(image); return -1; } @@ -189,12 +190,12 @@ retry: if(*winp == nil){ freescreen(*scrp); *scrp = nil; - freeimage(image); d->screenimage = nil; + freeimage(image); return -1; } - d->screenimage = *winp; assert((*winp)->chan != 0); + d->screenimage = *winp; return 1; } |