Module: wine Branch: master Commit: 3b07c851f84792689f97fc9036a08d40c4d1d3c2 URL: http://source.winehq.org/git/wine.git/?a=commit;h=3b07c851f84792689f97fc9036...
Author: Eric Pouech eric.pouech@orange.fr Date: Sat Jun 12 21:55:05 2010 +0200
winhelp: Avoid accessing a window in global window list after it has been freed.
---
programs/winhlp32/macro.c | 12 ++++++++++-- 1 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/programs/winhlp32/macro.c b/programs/winhlp32/macro.c index f75b63d..ca0fc8c 100644 --- a/programs/winhlp32/macro.c +++ b/programs/winhlp32/macro.c @@ -281,24 +281,32 @@ static void CALLBACK MACRO_CheckItem(LPCSTR str) static void CALLBACK MACRO_CloseSecondarys(void) { WINHELP_WINDOW *win; + WINHELP_WINDOW *next;
WINE_TRACE("()\n"); - for (win = Globals.win_list; win; win = win->next) + for (win = Globals.win_list; win; win = next) + { + next = win->next; if (lstrcmpi(win->info->name, "main")) WINHELP_ReleaseWindow(win); + } }
static void CALLBACK MACRO_CloseWindow(LPCSTR lpszWindow) { WINHELP_WINDOW *win; + WINHELP_WINDOW *next;
WINE_TRACE("("%s")\n", lpszWindow);
if (!lpszWindow || !lpszWindow[0]) lpszWindow = "main";
- for (win = Globals.win_list; win; win = win->next) + for (win = Globals.win_list; win; win = next) + { + next = win->next; if (!lstrcmpi(win->info->name, lpszWindow)) WINHELP_ReleaseWindow(win); + } }
static void CALLBACK MACRO_Compare(LPCSTR str)