Jack wrote in http://www.winehq.org/hypermail/wine-devel/2004/12/0720.html :
Program received signal SIGSEGV, Segmentation fault. 0x4009e05a in _int_malloc () from /lib/i686/libc.so.6 (gdb) bt #0 0x4009e05a in _int_malloc () from /lib/i686/libc.so.6 #1 0x4009d06c in malloc () from /lib/i686/libc.so.6 #2 0x080525a0 in pp_xmalloc (size=11) at ../../../wine/libs/wpp/preproc.c:80 #3 0x0805264a in pp_xstrdup (str=0xbfffec68 ""11:25:54"") at ../../../wine/libs/wpp/preproc.c:108
It is probably caused by overwritting the allocated memory. The last changes of widl look well so I think it is some old hidden problem. Lookng at code I found a potential bug, but I'm not sure if it a bug. In parsers, both widl's and wpp's, strings are not duplicated whie adding to structures. If it helps, I'll see if it is correct at all. This is included in diffs: wppppy.diff and widl.diff. Could you try it? I also found another small bug in wpp, but it's not what we're looking for. I included it with some code cleanup in wpppreproc.diff.
I swear I found this same error several months ago, but never submitted a patch (and can't find my old patch now). Your three patches solved the widl crash in current cvs for me. Alexandre, can you review / apply them?
Thanks, Dan