[pypy-commit] pypy errno-again: GetLastError fix
arigo
noreply at buildbot.pypy.org
Fri Jan 16 19:07:27 CET 2015
Author: Armin Rigo <arigo at 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
More information about the pypy-commit
mailing list