menu resource parsing question...

Chris Morgan cmorgan at alum.wpi.edu
Sat Nov 2 20:07:08 CST 2002


Upon the testing of Kazaa lite I ran into numerous errors like:
err:menu:MENU_ParseResource not a string item, flags: 0x0800

These entries appear to be intended as separators and in fact the flag of 
0x800 is MF_SEPARATOR.  The code in question is :

        if (!IS_STRING_ITEM(flags))
            ERR("not a string item, flags: 0x%04x\n", flags );

Where IS_STRING_ITEM is a macro:
	#define IS_STRING_ITEM(flags) (MENU_ITEM_TYPE ((flags)) == MF_STRING)

And:
#define MENU_ITEM_TYPE(flags) \
  ((flags) & (MF_STRING | MF_BITMAP | MF_OWNERDRAW | MF_SEPARATOR))

So, what appears to be occuring is that Kazaa is passing in MF_SEPARATOR as a 
flag and wine expects instead to get a MF_STRING with a string of null and in 
MENU_SetItemData() it does 'flags |= MF_SEPARATOR;'

I'm only posting to wine-devel because this check has been in the code since 
the initial import into cvs and I wanted to see if anyone knew more of the 
background on the issue.  The fix is pretty simple, just ignore the fact that 
IS_STRING_ITEM() returns false.  The rest should be taken care of by the 
existing checks.

Thanks,
Chris





More information about the wine-devel mailing list