From d64799970550fd1e76ebf12cceebb6d65af33aad Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 11 Mar 2009 17:14:39 +0000 Subject: [PATCH] fix bug related to sleeping and Windows networking svn: r14053 --- src/mred/mredmsw.cxx | 8 ++++++-- src/mzscheme/src/port.c | 6 +++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/mred/mredmsw.cxx b/src/mred/mredmsw.cxx index a971190aa8..5056e41a7d 100644 --- a/src/mred/mredmsw.cxx +++ b/src/mred/mredmsw.cxx @@ -303,7 +303,8 @@ void MrEdDispatchEvent(MSG *msg) LeaveEvent *e; e = (LeaveEvent *)GET_SAFEREF(sr); FREE_SAFEREF(sr); - wxDoLeaveEvent(e->wnd, e->x, e->y, e->flags); + if (e) + wxDoLeaveEvent(e->wnd, e->x, e->y, e->flags); } else if (!wxTheApp->ProcessMessage(msg)) { #if wxLOG_EVENTS if (!log) @@ -983,7 +984,10 @@ void MrEdMSWSleep(float secs, void *fds) } if (th2) { - closesocket(fake); + while (closesocket(fake)) { + if (WSAGetLastError() != WSAEINPROGRESS) + break; + } WaitForSingleObject(th2, INFINITE); scheme_forget_thread(thread_memory); CloseHandle(th2); diff --git a/src/mzscheme/src/port.c b/src/mzscheme/src/port.c index beb09cf2a7..2c7398d3ff 100644 --- a/src/mzscheme/src/port.c +++ b/src/mzscheme/src/port.c @@ -8102,7 +8102,11 @@ static void default_sleep(float v, void *fds) } clean_up_wait(result, array, rps, count); - closesocket(fake); /* cause selector thread to end */ + /* cause selector thread to end: */ + while (closesocket(fake)) { + if (WSAGetLastError() != WSAEINPROGRESS) + break; + } WaitForSingleObject(th, INFINITE); scheme_forget_thread(thread_memory);