From 700744006caf905d2e3103c26da6b82b69d2f6b7 Mon Sep 17 00:00:00 2001 From: Khaled Hosny Date: Mon, 27 Aug 2012 07:11:10 +0200 Subject: [PATCH] Prevent a crash when opening contextual subtables I don't know why it is crshing now (may be the resources?) as this code have been like that since the dawn of time. Traceback: 0xb78289b0 in check_image_buffers (gdisp=0x84d5c78, neww=, newh=7, is_bitmap=0) at gimagexdraw.c:1705 1705 if ( width > gdisp->gg.iwidth || depth!=gdisp->gg.img->depth ) { (gdb) bt #0 0xb78289b0 in check_image_buffers (gdisp=0x84d5c78, neww=, newh=7, is_bitmap=0) at gimagexdraw.c:1705 #1 0xb782b595 in gximage_to_ximage (image=0x8527ff0, src=0xbfffa0a0, gw=) at gimagexdraw.c:1778 #2 0xb782e8c2 in _GXDraw_Image (_w=0x9bf4bb0, image=, src=0xbfffa0a0, x=8250, y=7) at gimagexdraw.c:1981 #3 0xb7807a98 in GDrawDrawScaledImage (w=0x9bf4bb0, img=0x8527ff0, x=8250, y=7) at gdraw.c:488 #4 0xb781b513 in GListMarkDraw (pixmap=0x9bf4bb0, x=8250, y=1, height=19, state=gs_enabled) at ggadgets.c:482 #5 0xb788c493 in GMatrixEdit_SubExpose (gme=0x9bd9448, pixmap=0x9bf4bb0, event=0xbfffa400) at gmatrixedit.c:1691 #6 0xb788c6b1 in matrixeditsub_e_h (gw=0x9bf4bb0, event=0xbfffa400) at gmatrixedit.c:1723 #7 0xb78040da in _GWidget_Container_eh (gw=0x9bd9178, event=0xbfffa400) at gcontainer.c:269 #8 0xb7878001 in dispatchEvent (gdisp=0x84d5c78, event=0xbfffa5ec) at gxdraw.c:3959 #9 0xb7878162 in GXDrawProcessOneEvent (gdisp=0x84d5c78) at gxdraw.c:3991 #10 0xb7808606 in GDrawProcessOneEvent (gdisp=0x84d5c78) at gdraw.c:748 #11 0x080c77ff in ContextChainEdit (sf=0x9aa3c68, fpst=0x8ad982c, gfi=0x9afbfc0, newname=0x0, layer=1) at contextchain.c:3207 #12 0x0818f14a in _LookupSubtableContents (sf=0x9aa3c68, sub=0x8a9d43c, sd=0x0, def_layer=1) at lookupui.c:5531 #13 0x0813138d in LookupSubtableContents (gfi=0x9afbfc0, isgpos=0) at fontinfo.c:5941 #14 0x08136a16 in LookupMouse (gfi=0x9afbfc0, isgpos=0, event=0xbfffe930) at fontinfo.c:7336 #15 0x08136ccc in lookups_e_h (gw=0x9b98230, event=0xbfffe930, isgpos=0) at fontinfo.c:7380 #16 0x08136d78 in gsublookups_e_h (gw=0x9b98230, event=0xbfffe930) at fontinfo.c:7399 #17 0xb788f3b0 in drawable_e_h (pixmap=0x9b98230, event=0xbfffe930) at gdrawable.c:219 #18 0xb78048a7 in _GWidget_Container_eh (gw=0x9b98230, event=0xbfffe930) at gcontainer.c:393 #19 0xb7878001 in dispatchEvent (gdisp=0x84d5c78, event=0xbfffeb1c) at gxdraw.c:3959 #20 0xb7878480 in GXDrawEventLoop (gd=0x84d5c78) at gxdraw.c:4058 #21 0xb78086c1 in GDrawEventLoop (gdisp=0x84d5c78) at gdraw.c:766 #22 0x0822457c in main (argc=1, argv=0xbffff134) at startui.c:1501 --- gdraw/gimagexdraw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdraw/gimagexdraw.c b/gdraw/gimagexdraw.c index ccf0f49a78..0421f3f08e 100644 --- a/gdraw/gimagexdraw.c +++ b/gdraw/gimagexdraw.c @@ -1702,7 +1702,7 @@ static void check_image_buffers(GXDisplay *gdisp, int neww, int newh, int is_bit width = neww; if ( width<400 ) width = 400; } - if ( width > gdisp->gg.iwidth || depth!=gdisp->gg.img->depth ) { + if ( width > gdisp->gg.iwidth || (gdisp->gg.img!=NULL && depth!=gdisp->gg.img->depth) ) { if ( depth<=8 ) { if ( gdisp->gg.red_dith!=NULL ) free(gdisp->gg.red_dith); if ( gdisp->gg.green_dith!=NULL ) free(gdisp->gg.green_dith);