Author: Armin Rigo <ar...@tunes.org> Branch: errno-again Changeset: r75400:e06dabcafed5 Date: 2015-01-16 18:59 +0100 http://bitbucket.org/pypy/pypy/changeset/e06dabcafed5/
Log: GetLastError fix diff --git a/pypy/module/_rawffi/interp_rawffi.py b/pypy/module/_rawffi/interp_rawffi.py --- a/pypy/module/_rawffi/interp_rawffi.py +++ b/pypy/module/_rawffi/interp_rawffi.py @@ -18,7 +18,6 @@ from rpython.rlib.rarithmetic import intmask, r_uint from pypy.module._rawffi.buffer import RawFFIBuffer from pypy.module._rawffi.tracker import tracker -from pypy.module._rawffi import lasterror TYPEMAP = { # XXX A mess with unsigned/signed/normal chars :-/ @@ -496,14 +495,10 @@ try: if self.resshape is not None: result = self.resshape.allocate(space, 1, autofree=True) - lasterror.restore_last_error(space) self.ptr.call(args_ll, result.ll_buffer) - lasterror.save_last_error(space) return space.wrap(result) else: - lasterror.restore_last_error(space) self.ptr.call(args_ll, lltype.nullptr(rffi.VOIDP.TO)) - lasterror.save_last_error(space) return space.w_None except StackCheckError, e: raise OperationError(space.w_ValueError, space.wrap(e.message)) @@ -619,11 +614,13 @@ rposix.set_saved_errno(space.int_w(w_errno)) if sys.platform == 'win32': + # see also + # https://bitbucket.org/pypy/pypy/issue/1944/ctypes-on-windows-getlasterror def get_last_error(space): - return space.wrap(lasterror.fetch_last_error(space)) + return space.wrap(rwin32.GetLastError_saved()) @unwrap_spec(error=int) def set_last_error(space, error): - lasterror.store_last_error(space, error) + rwin32.SetLastError_saved(error) else: # always have at least a dummy version of these functions # (https://bugs.pypy.org/issue1242) diff --git a/pypy/module/_rawffi/lasterror.py b/pypy/module/_rawffi/lasterror.py deleted file mode 100644 --- a/pypy/module/_rawffi/lasterror.py +++ /dev/null @@ -1,40 +0,0 @@ -# For Windows only. -# https://bitbucket.org/pypy/pypy/issue/1944/ctypes-on-windows-getlasterror - -import os - -_MS_WINDOWS = os.name == "nt" - - -if _MS_WINDOWS: - from rpython.rlib import rwin32 - from pypy.interpreter.executioncontext import ExecutionContext - - - ExecutionContext._rawffi_last_error = 0 - - def fetch_last_error(space): - ec = space.getexecutioncontext() - return ec._rawffi_last_error - - def store_last_error(space, last_error): - ec = space.getexecutioncontext() - ec._rawffi_last_error = last_error - - def restore_last_error(space): - ec = space.getexecutioncontext() - lasterror = ec._rawffi_last_error - rwin32.SetLastError(lasterror) - - def save_last_error(space): - lasterror = rwin32.GetLastError() - ec = space.getexecutioncontext() - ec._rawffi_last_error = lasterror - -else: - - def restore_last_error(space): - pass - - def save_last_error(space): - pass _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit