From a426c08ce22b9f9b256ab028c223b362e2519361 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Fri, 11 Jan 2013 23:18:22 +0100 Subject: libdraw: gengetwindow() fix mistake dont zero *winp so the "screen" pointer is preserved. --- sys/src/libdraw/init.c | 21 +++++++++++---------- 1 file 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; } -- cgit v1.2.3