Author: Armin Rigo <[email protected]>
Branch: errno-again
Changeset: r75401:465c2459d8ca
Date: 2015-01-16 19:06 +0100
http://bitbucket.org/pypy/pypy/changeset/465c2459d8ca/
Log: more win fixes
diff --git a/pypy/module/_multiprocessing/interp_connection.py
b/pypy/module/_multiprocessing/interp_connection.py
--- a/pypy/module/_multiprocessing/interp_connection.py
+++ b/pypy/module/_multiprocessing/interp_connection.py
@@ -406,7 +406,7 @@
size, written_ptr, rffi.NULL)
if (result == 0 and
- rwin32.GetLastError() == ERROR_NO_SYSTEM_RESOURCES):
+ rwin32.GetLastError_saved() == ERROR_NO_SYSTEM_RESOURCES):
raise oefmt(space.w_ValueError,
"Cannot send %d bytes over connection", size)
finally:
@@ -430,7 +430,7 @@
if result:
return intmask(read_ptr[0]), lltype.nullptr(rffi.CCHARP.TO)
- err = rwin32.GetLastError()
+ err = rwin32.GetLastError_saved()
if err == ERROR_BROKEN_PIPE:
raise OperationError(space.w_EOFError, space.w_None)
elif err != ERROR_MORE_DATA:
diff --git a/pypy/module/_multiprocessing/interp_semaphore.py
b/pypy/module/_multiprocessing/interp_semaphore.py
--- a/pypy/module/_multiprocessing/interp_semaphore.py
+++ b/pypy/module/_multiprocessing/interp_semaphore.py
@@ -26,8 +26,9 @@
_CreateSemaphore = rwin32.winexternal(
'CreateSemaphoreA', [rffi.VOIDP, rffi.LONG, rffi.LONG, rwin32.LPCSTR],
- rwin32.HANDLE)
- _CloseHandle = rwin32.winexternal('CloseHandle', [rwin32.HANDLE],
+ rwin32.HANDLE,
+ save_err=rffi.RFFI_SAVE_LASTERROR)
+ _CloseHandle_no_errno = rwin32.winexternal('CloseHandle', [rwin32.HANDLE],
rwin32.BOOL, releasegil=False)
_ReleaseSemaphore = rwin32.winexternal(
'ReleaseSemaphore', [rwin32.HANDLE, rffi.LONG, rffi.LONGP],
@@ -230,15 +231,13 @@
rwin32.SetLastError(0)
handle = _CreateSemaphore(rffi.NULL, val, max, rffi.NULL)
# On Windows we should fail on ERROR_ALREADY_EXISTS
- err = rwin32.GetLastError()
+ err = rwin32.GetLastError_saved()
if err != 0:
raise WindowsError(err, "CreateSemaphore")
return handle
def delete_semaphore(handle):
- if not _CloseHandle(handle):
- err = rwin32.GetLastError()
- raise WindowsError(err, "CloseHandle")
+ _CloseHandle_no_errno(handle)
def semlock_acquire(self, space, block, w_timeout):
if not block:
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit