summaryrefslogtreecommitdiff
path: root/src/backend/port/win32/sema.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2004-09-07 14:31:42 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2004-09-07 14:31:42 +0000
commit2750b11e181a691363f0660b197dd0a57f9accc2 (patch)
treea78fa9c0f719865f08ffaadaf512757d924ceeb5 /src/backend/port/win32/sema.c
parenta1f7fb09756933369de462b729e81b14c0a3da99 (diff)
Fix places where WaitForxxx can block, to eliminate failure to detect
deadlock on Win32. Magnus Hagander
Diffstat (limited to 'src/backend/port/win32/sema.c')
-rw-r--r--src/backend/port/win32/sema.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/backend/port/win32/sema.c b/src/backend/port/win32/sema.c
index 71ab24c35c5..7676f2d5352 100644
--- a/src/backend/port/win32/sema.c
+++ b/src/backend/port/win32/sema.c
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2004, PostgreSQL Global Development Group
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/port/win32/sema.c,v 1.8 2004/08/29 05:06:46 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/port/win32/sema.c,v 1.9 2004/09/07 14:31:42 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -233,7 +233,7 @@ semop(int semId, struct sembuf * sops, int nsops)
wh[0] = cur_handle;
wh[1] = pgwin32_signal_event;
- ret = WaitForMultipleObjects(2, wh, FALSE, (sops[0].sem_flg & IPC_NOWAIT) ? 0 : INFINITE);
+ ret = WaitForMultipleObjectsEx(2, wh, FALSE, (sops[0].sem_flg & IPC_NOWAIT) ? 0 : INFINITE, TRUE);
if (ret == WAIT_OBJECT_0)
{
@@ -241,7 +241,7 @@ semop(int semId, struct sembuf * sops, int nsops)
sem_counts[sops[0].sem_num]--;
return 0;
}
- else if (ret == WAIT_OBJECT_0 + 1)
+ else if (ret == WAIT_OBJECT_0 + 1 || ret == WAIT_IO_COMPLETION)
{
/* Signal event is set - we have a signal to deliver */
pgwin32_dispatch_queued_signals();