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