Author: Armin Rigo <ar...@tunes.org> 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 pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit