diff -cr postgresql-snapshot-030210/src/backend/port/win32/sema.c postgresql-win32-mha/src/backend/port/win32/sema.c
*** postgresql-snapshot-030210/src/backend/port/win32/sema.c	Mon Aug  4 04:40:02 2003
--- postgresql-win32-mha/src/backend/port/win32/sema.c	Thu Feb 12 20:10:08 2004
***************
*** 227,235 ****
  		DWORD		ret;
  
  		if (sops[0].sem_flg & IPC_NOWAIT)
! 			ret = WaitForSingleObject(cur_handle, 0);
  		else
! 			ret = WaitForSingleObject(cur_handle, INFINITE);
  
  		if (ret == WAIT_OBJECT_0)
  		{
--- 227,235 ----
  		DWORD		ret;
  
  		if (sops[0].sem_flg & IPC_NOWAIT)
! 			ret = WaitForSingleObjectEx(cur_handle, 0, TRUE);
  		else
! 			ret = WaitForSingleObjectEx(cur_handle, INFINITE, TRUE);
  
  		if (ret == WAIT_OBJECT_0)
  		{
***************
*** 240,245 ****
--- 240,248 ----
  		else if (ret == WAIT_TIMEOUT)
  			/* Couldn't get it */
  			errno = EAGAIN;
+ 		else if (ret == WAIT_IO_COMPLETION)
+ 			/* Signal delivered */
+ 			errno = EINTR;
  		else
  			errno = EIDRM;
  	}
