Stuck in SetMenuItemInfo

Mike Hearn m.hearn at signal.qinetiq.com
Wed Jan 8 08:47:50 CST 2003


Hi,

Debugging a crash in IE in the menus, I traced it to this check in
SetMenuItemInfoA, apparently trying to stop apps passing in bad data. 

    if ((lpmii->fType & (MF_HILITE|MF_POPUP)) || (lpmii->fState)) {
	/* QuickTime does pass invalid data into SetMenuItemInfo.
	 * do some of the checks Windows does.
	 */
        WARN("Bad masks for type (0x%08x) or state (0x%08x)\n",
             lpmii->fType,lpmii->fState );
	return FALSE;
    }

In particular, it seems to check for a couple of bits set that aren't by
IE, this is the function trace in Windows:

SetMenuItemInfoW( 0x000B032B 0 TRUE [0x0013E070] -> 44 , MIIM_ID |
MIIM_SUBMENU , MFT_BITMAP | MFT_RIGHTORDER , MFS_CHECKED , 3169 , NULL ,
0x003C7FC8 , 0x40000064 , 0x003C806C , NULL , 2012758772 , 0x003B0000 )
-> TRUE

So as you can see it sets MFT_BITMAP, MFT_RIGHTORDER and MFT_CHECKED,
but not HILITE or POPUP.

This is where I got stuck. I can't see what this check should actually
be, but it's clearly incomplete at the moment, as Windows doesn't return
false with this input.

Has anybody got any advice?
thanks -mike

-- 
Mike Hearn <m.hearn at signal.qinetiq.com>
QinetiQ - Malvern Technology Center




More information about the wine-devel mailing list