imagelist.c NULL dereferencing bug
Rolf Kalbermatter
rolf.kalbermatter at citeng.com
Sat Nov 9 15:21:58 CST 2002
Didn't see a followup on this problem so decided to post a new patch.
ChangeLog:
* dlls/comctl32/imagelist.c
- Fix some NULL dereferencing based on earlier similar but incomplete patch
License: X11/LGPL
Rolf Kalbermatter
Index: dlls/comctl32/imagelist.c
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/imagelist.c,v
retrieving revision 1.65
diff -u -r1.65 imagelist.c
--- dlls/comctl32/imagelist.c 23 Oct 2002 22:19:11 -0000 1.65
+++ dlls/comctl32/imagelist.c 9 Nov 2002 13:26:25 -0000
@@ -1074,20 +1074,21 @@
BOOL WINAPI
ImageList_DrawIndirect (IMAGELISTDRAWPARAMS *pimldp)
{
- INT cx, cy, nOvlIdx;
+ INT cx, cy, lx, ly, nOvlIdx;
DWORD fState, dwRop;
UINT fStyle;
COLORREF clrBk, oldImageBk, oldImageFg;
HDC hImageDC, hImageListDC, hMaskListDC;
HBITMAP hImageBmp, hOldImageBmp, hOldImageListBmp, hOldMaskListBmp,
hBlendMaskBmp;
BOOL bIsTransparent, bBlend, bResult = FALSE;
- const HIMAGELIST himl = pimldp->himl;
- const INT lx = himl->cx * pimldp->i + pimldp->xBitmap;
- const INT ly = pimldp->yBitmap;
-
- if (!pimldp || !himl) return FALSE;
+ HIMAGELIST himl;
+
+ if (!pimldp || !(himl = pimldp->himl) return FALSE;
if ((pimldp->i < 0) || (pimldp->i >= himl->cCurImage)) return FALSE;
+ lx = himl->cx * pimldp->i + pimldp->xBitmap;
+ ly = pimldp->yBitmap;
+
fState = pimldp->cbSize < sizeof(IMAGELISTDRAWPARAMS) ? ILS_NORMAL :
pimldp->fState;
fStyle = pimldp->fStyle & ~ILD_OVERLAYMASK;
cx = (pimldp->cx == 0) ? himl->cx : pimldp->cx;
Rolf Kalbermatter
More information about the wine-patches
mailing list