Javier Kohen wrote: > > It would be great if you could prepare a bug report. I'm not using the > gcc-4.0 archive anymore, but I've prepared a similar report in the past > and it got fixed for gcc-4.0 (the compiler). I could give you a hand if > you needed it. However, it looks like you have tamed it already :) > > Regards, The testcase has been sent. See the attachment, if you are interested. If you compile it with -O2 instead of -O, then it dies. Regards Harri
#include <stdio.h> typedef struct _XDisplay Display; typedef union { Display *display; void *gc; void *visual; void *screen; void *pixmap_format; void *font; } XEDataObject; typedef struct _XExtData { int number; /* number returned by XRegisterExtension */ struct _XExtData *next; /* next item on list of data for structure */ int (*free_private)( /* called to free private storage */ struct _XExtData *extension ); void * private_data; /* data private to this extension. */ } XExtData; struct _XDisplay { XExtData *ext_data; /* hook for extension to hang data */ int data; /* Network socket. */ }; XExtData **XEHeadOfExtensionList(object) XEDataObject object; { return *(XExtData ***)&object; } void _XF86BigfontCodes (dpy) register Display *dpy; { XEDataObject dpy_union; XExtData **pData; dpy_union.display = dpy; pData = XEHeadOfExtensionList(dpy_union); printf("Data: %d\n", (*pData)->number); } int main() { XExtData extdata_in_main; Display dpy = { &extdata_in_main, 0xdeadbeef, }; extdata_in_main.number = 42; extdata_in_main.next = 0; _XF86BigfontCodes(&dpy); return 0; }
Attachment:
signature.asc
Description: OpenPGP digital signature