A problem with comctl32
DanteAliegri
dantealiegri at umbc.edu
Mon Nov 4 06:33:10 CST 2002
Rolf Kalbermatter wrote:
>DanteAliegri <dantealiegri at umbc.edu> wrote:
>
>
>
>>Hey, I've come across what appears to be a
>>simple problem in comctl32.
>>When running icq99b, wine was dying in imagelist.c while trying to
>>dereference a null pointer.
>>Upon looking at the file, there was code for returning FALSE if that
>>pointer was null, thus I felt it being null may be a valid choice.
>>I made the attached change, and the problem was fixed.
>>Comments?
>>
>>--- imagelist.c 23 Oct 2002 22:19:11 -0000 1.65
>>+++ imagelist.c 2 Nov 2002 20:40:53 -0000
>>@@ -1082,11 +1082,14 @@
>> HBITMAP hImageBmp, hOldImageBmp, hOldImageListBmp, hOldMaskListBmp,
>>hBlendMaskBmp;
>> BOOL bIsTransparent, bBlend, bResult = FALSE;
>> const HIMAGELIST himl = pimldp->himl;
>>
>>
> ^^^^^^^^^^^^
>According to the same lines pimldp could also be NULL so this might as
>well cause a NULL pointer dereference and should be moved to after the
>check for "if (!pimldp || !(himl = pimldp->himl)) return FALSE;
>
>
>Of course the question remains why would you call the function at all
>with a NULL pointer.
>
>
That is a good question. I didn't do any looking into this; however the
function that this is in is
BOOL WINAPI ImageList_DrawIndirect (IMAGELISTDRAWPARAMS *pimldp)
So pimldp and himl aren't handed to that function.
I was thinking that it had something do to with asking it to draw
something that you hadn't given the images for yet
( so some program that just does while( 1 ) { draw() ;
maybe_add_a_picture(); } ) as some way to make best response,
or something silly like that.
>
>
>>- const INT lx = himl->cx * pimldp->i + pimldp->xBitmap;
>>- const INT ly = pimldp->yBitmap;
>>+ static INT lx;
>>+ static INT ly;
>>
>>
>
>Should this be really static? Can't this function be called reentrant?
>
>
>
well, static is no worse than const ;)
but I'll leave that to dimitrie.
I was simply trying to cause as few changes as possible, and changing it
to static would make it a global , rather than
a stack variable, the same as const.
-Dante
More information about the wine-devel
mailing list