summaryrefslogtreecommitdiff
path: root/sys/src/libdraw
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2013-01-11 23:18:22 +0100
committercinap_lenrek <cinap_lenrek@gmx.de>2013-01-11 23:18:22 +0100
commita426c08ce22b9f9b256ab028c223b362e2519361 (patch)
tree94c592d0aeb52872df2c3eb10f88c9a44558f8f8 /sys/src/libdraw
parent23b189c2bcf2de03902ef0f18e23cf030c6d072a (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.c21
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;
}