[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Problem with libX11 in gcc4 archive



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


Reply to: