Module: wine Branch: stable Commit: a9214f5f68fded57bf2f9271de7b0e9997bd45ad URL: http://source.winehq.org/git/wine.git/?a=commit;h=a9214f5f68fded57bf2f9271de... Author: Maarten Lankhorst <m.b.lankhorst(a)gmail.com> Date: Tue Aug 10 16:04:24 2010 +0200 winmm: Fix fd leak on restarting timer. (cherry picked from commit 6910b0f1439b15d73783bcd276512a517fe8fd83) --- dlls/winmm/time.c | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-) diff --git a/dlls/winmm/time.c b/dlls/winmm/time.c index e692fb6..e055f6b 100644 --- a/dlls/winmm/time.c +++ b/dlls/winmm/time.c @@ -243,16 +243,19 @@ static DWORD CALLBACK TIME_MMSysTimeThread(LPVOID arg) static void TIME_MMTimeStart(void) { TIME_TimeToDie = 0; - if (!TIME_hMMTimer) { - HMODULE mod; - if (pipe(TIME_fdWake) < 0) - { + + if (TIME_fdWake[0] < 0) { + if (pipe(TIME_fdWake) < 0) { TIME_fdWake[0] = TIME_fdWake[1] = -1; ERR("Cannot create pipe: %s\n", strerror(errno)); } else { fcntl(TIME_fdWake[0], F_SETFL, O_NONBLOCK); fcntl(TIME_fdWake[1], F_SETFL, O_NONBLOCK); } + } + + if (!TIME_hMMTimer) { + HMODULE mod; GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, (LPCWSTR)TIME_MMSysTimeThread, &mod); TIME_hMMTimer = CreateThread(NULL, 0, TIME_MMSysTimeThread, mod, 0, NULL); SetThreadPriority(TIME_hMMTimer, THREAD_PRIORITY_TIME_CRITICAL);