This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
binutils-owner@sourceware.org wrote on 20.04.2007 17:26:40: > Hi, > > I believe I have found a bug in windres (appears to be part of the > binutils-20060817-1 package). > > If I define POPUP Submenus of a MENUEX, the resulting resource is > corrupt. > > I have constructed a small example to show the error: > > | karoshi:~/demo>make > | windres -i res.rc -o res.o > | cc -g -O -Wall -mno-cygwin -o demo demo.c res.o > | karoshi:~/demo>./demo.exe > | LoadMenu failed with error 13: Die Daten sind unzulÃssig. > > (sorry for the german error message, it is "The Data is invalid") > > I have found an (old) mail with a patch for the very same problem. It > can be viewed at: > > http://sources.redhat.com/ml/binutils/2004-06/msg00609.html > > Unfortunately I don't know how to recompile parts of cygwin, so I can't > test that patch, but it would be really great if somebody could look at > this. > > ---------------------------------------------------------------------- > Example resource file "res.rc": > #include <windows.h> > > 123 MENUEX > BEGIN > POPUP "Dummy", 144 > BEGIN > MENUITEM "&About...", 1 > END > END > ---------------------------------------------------------------------- > Example c program "demo.c": > #include <stdio.h> > #include <string.h> > > #include <windows.h> > > void ErrorExit(char *); > > int APIENTRY WinMain(HINSTANCE hInst, > HINSTANCE hPrevInstance, > LPSTR lpCmdLine, > int nCmdShow){ > HMENU hCtxMenu; > > hCtxMenu=LoadMenu (hInst, MAKEINTRESOURCE(123)); > if(hCtxMenu==NULL){ > ErrorExit("LoadMenu"); > }; > return 0; > } > > void ErrorExit(char *text) { > TCHAR szBuf[80]; > LPVOID lpMsgBuf; > DWORD dw = GetLastError(); > > FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | > FORMAT_MESSAGE_FROM_SYSTEM, > NULL, > dw, > MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), > (LPTSTR) &lpMsgBuf, > 0, NULL ); > wsprintf(szBuf, "%s failed with error %d: %s", text, dw, lpMsgBuf); > printf("%s",szBuf); > LocalFree(lpMsgBuf); > ExitProcess(dw); > }; > ---------------------------------------------------------------------- > Example Makefile "Makefile": > CFLAGS+=-g -O -Wall -mno-cygwin > LIBS= > > PRG=demo > > ${PRG}: ${PRG}.c res.o > ${CC} ${CFLAGS} -o ${PRG} ${PRG}.c res.o ${LIBS} > > res.o: res.rc > windres -i $< -o $@ > ---------------------------------------------------------------------- > > Thanks, > Sec > > P.S.: if you remove the ",144" part from the POPUP statement, the > program will run fine. This is because windres then compiles it as > "MENU" instead of "MENUEX", which can be verified with "windres -i res.o" > > P.P.S.: This is a resend from my posting to the cygwin mailinglist from > where I was pointed to the binutils mailinglist. I agree, that the MENUEX resource is not proper. AFAIC read in the MS specification of rc files, it seems to be that the "id" is a dword, as to see in the MENUITEM spec for the "result" field. Therefore I assume, that the following patch should be more correct, than to simply to pad the structure. ChangeLog: 2007-04-23 Kai Tietz <Kai.Tietz@onevision.com> * binutils/resbin.c: (bin_to_res_menuexitems, res_to_bin_menuexitems): Read id as 32-bit word. Regards, i.A. Kai Tietz ------------------------------------------------------------------------------------------ OneVision Software Entwicklungs GmbH & Co. KG Dr.-Leo-Ritter-StraÃe 9 - 93049 Regensburg Tel: +49.(0)941.78004.0 - Fax: +49.(0)941.78004.489 - www.OneVision.com Commerzbank Regensburg - BLZ 750 400 62 - Konto 6011050 Handelsregister: HRA 6744, Amtsgericht Regensburg KomplementÃrin: OneVision Software Entwicklungs Verwaltungs GmbH Dr.-Leo-Ritter-StraÃe 9 â 93049 Regensburg Handelsregister: HRB 8932, Amtsgericht Regensburg - GeschÃftsfÃhrer: Ulrike DÃhler, Manuela Kluger
Attachment:
menuitemex_align.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |