ref: 16784a2e45937c6d4df5fe21c0838f8a7dfeb0a7
parent: 5254e41f6bad708fb3d2cc4e98a416d3efa36eb2
author: cinap_lenrek <[email protected]>
date: Sat Jan 11 19:07:27 EST 2020
devdraw: fix topnwindows() panic when images are not windows (thanks aiju) Crashes drawterm and native: #include <u.h> #include <libc.h> #include <draw.h> void main(int argc, char **argv) { initdraw(nil, nil, nil); Image *a[] = {screen, display->black}; topnwindows(a, nelem(a)); flushimage(display, 1); }
--- a/sys/src/9/port/devdraw.c
+++ b/sys/src/9/port/devdraw.c
@@ -2022,13 +2022,13 @@
free(lp);
nexterror();
}
- for(j=0; j<nw; j++)
+ for(j=0; j<nw; j++){
lp[j] = drawimage(client, a+1+1+2+j*4);
- if(lp[0]->layer == 0)
- error("images are not windows");
- for(j=1; j<nw; j++)
+ if(lp[j]->layer == 0)
+ error("images are not windows");
if(lp[j]->layer->screen != lp[0]->layer->screen)
error("images not on same screen");
+ }
if(a[1])
memltofrontn(lp, nw);
else