Maarten Lankhorst : winmm: Don't operate on freed data in timer.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Jul 27 07:34:41 CDT 2007
Module: wine
Branch: master
Commit: 93b6f158263772493c6ebb712bbf2e96427e4474
URL: http://source.winehq.org/git/wine.git/?a=commit;h=93b6f158263772493c6ebb712bbf2e96427e4474
Author: Maarten Lankhorst <m.b.lankhorst at gmail.com>
Date: Thu Jul 19 11:34:48 2007 +0200
winmm: Don't operate on freed data in timer.
---
dlls/winmm/time.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/dlls/winmm/time.c b/dlls/winmm/time.c
index 827f87a..2092540 100644
--- a/dlls/winmm/time.c
+++ b/dlls/winmm/time.c
@@ -359,6 +359,7 @@ MMRESULT WINAPI timeSetEvent(UINT wDelay, UINT wResol, LPTIMECALLBACK lpFunc,
MMRESULT WINAPI timeKillEvent(UINT wID)
{
WINE_TIMERENTRY *lpSelf = NULL, *lpTimer;
+ DWORD wFlags;
TRACE("(%u)\n", wID);
EnterCriticalSection(&WINMM_cs);
@@ -378,10 +379,11 @@ MMRESULT WINAPI timeKillEvent(UINT wID)
WARN("wID=%u is not a valid timer ID\n", wID);
return MMSYSERR_INVALPARAM;
}
- if (lpSelf->wFlags & TIME_KILL_SYNCHRONOUS)
+ wFlags = lpSelf->wFlags;
+ if (wFlags & TIME_KILL_SYNCHRONOUS)
EnterCriticalSection(&TIME_cbcrst);
HeapFree(GetProcessHeap(), 0, lpSelf);
- if (lpSelf->wFlags & TIME_KILL_SYNCHRONOUS)
+ if (wFlags & TIME_KILL_SYNCHRONOUS)
LeaveCriticalSection(&TIME_cbcrst);
return TIMERR_NOERROR;
}
More information about the wine-cvs
mailing list