XPutBackEvent copies an XEvent internally, so the pointer passed in must
point to an actual XEvent object, not an XConfigureEvent, which is smaller. This avoids an invalid stack read. git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1680 7f0cb862-5218-0410-a997-914c9d46530a
This commit is contained in:
parent
d0c5d990d7
commit
18718163db
@ -137,7 +137,7 @@ void fgPlatformOpenWindow( SFG_Window* window, const char* title,
|
|||||||
XEvent eventReturnBuffer; /* return buffer required for a call */
|
XEvent eventReturnBuffer; /* return buffer required for a call */
|
||||||
unsigned long mask;
|
unsigned long mask;
|
||||||
unsigned int current_DisplayMode = fgState.DisplayMode ;
|
unsigned int current_DisplayMode = fgState.DisplayMode ;
|
||||||
XConfigureEvent fakeEvent = {0};
|
XEvent fakeEvent = {0};
|
||||||
|
|
||||||
/* Save the display mode if we are creating a menu window */
|
/* Save the display mode if we are creating a menu window */
|
||||||
if( window->IsMenu && ( ! fgStructure.MenuContext ) )
|
if( window->IsMenu && ( ! fgStructure.MenuContext ) )
|
||||||
@ -247,14 +247,14 @@ void fgPlatformOpenWindow( SFG_Window* window, const char* title,
|
|||||||
/* Fake configure event to force viewport setup
|
/* Fake configure event to force viewport setup
|
||||||
* even with no window manager.
|
* even with no window manager.
|
||||||
*/
|
*/
|
||||||
fakeEvent.type = ConfigureNotify;
|
fakeEvent.xconfigure.type = ConfigureNotify;
|
||||||
fakeEvent.display = fgDisplay.pDisplay.Display;
|
fakeEvent.xconfigure.display = fgDisplay.pDisplay.Display;
|
||||||
fakeEvent.window = window->Window.Handle;
|
fakeEvent.xconfigure.window = window->Window.Handle;
|
||||||
fakeEvent.x = x;
|
fakeEvent.xconfigure.x = x;
|
||||||
fakeEvent.y = y;
|
fakeEvent.xconfigure.y = y;
|
||||||
fakeEvent.width = w;
|
fakeEvent.xconfigure.width = w;
|
||||||
fakeEvent.height = h;
|
fakeEvent.xconfigure.height = h;
|
||||||
XPutBackEvent(fgDisplay.pDisplay.Display, (XEvent*)&fakeEvent);
|
XPutBackEvent(fgDisplay.pDisplay.Display, &fakeEvent);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The GLX context creation, possibly trying the direct context rendering
|
* The GLX context creation, possibly trying the direct context rendering
|
||||||
|
Reference in New Issue
Block a user