From 6b4c9756540072a9e65dbc76b927397dda2dabfe Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 23 Mar 2009 02:02:30 +0000 Subject: [PATCH] Date: Sat, 21 Mar 2009 19:41:52 -0700 (PDT) From: Mason Wheeler Subject: [SDL] Critical SDL 1.3 patch Displaying a window created with SDL_CreateWindowFrom was causing stack overf lows for me under certain conditions. After far too much work trying to get Visual Studio's debugger to play nice with a program written in Delphi, I tra cked it down to a nasty reentrancy cycle in the WndProc handling. Here's a p atch that fixes the problem --- src/video/win32/SDL_win32events.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/video/win32/SDL_win32events.c b/src/video/win32/SDL_win32events.c index 4b170f17a..7921eaa6f 100644 --- a/src/video/win32/SDL_win32events.c +++ b/src/video/win32/SDL_win32events.c @@ -570,6 +570,17 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) } return (0); + /* If this isn't our window, we don't need to repaint the frame. + This fixes a reentrancy issue that can cause stack overflows with foreign windows. + 3/21/09 Mason Wheeler */ + case WM_NCPAINT: + { + if (SDL_GetWindowFlags(data->windowID) && SDL_WINDOW_FOREIGN) { + return(0); + } + break; + } + /* We'll do our own drawing, prevent flicker */ case WM_ERASEBKGND: {