Author: Armin Rigo <[email protected]>
Branch:
Changeset: r93898:5e00d00261f8
Date: 2018-02-27 19:58 +0100
http://bitbucket.org/pypy/pypy/changeset/5e00d00261f8/
Log: Update the _cffi_backend module to 1.11.5
diff --git a/pypy/module/_cffi_backend/__init__.py
b/pypy/module/_cffi_backend/__init__.py
--- a/pypy/module/_cffi_backend/__init__.py
+++ b/pypy/module/_cffi_backend/__init__.py
@@ -3,7 +3,7 @@
from rpython.rlib import rdynload, clibffi
from rpython.rtyper.lltypesystem import rffi
-VERSION = "1.11.4"
+VERSION = "1.11.5"
FFI_DEFAULT_ABI = clibffi.FFI_DEFAULT_ABI
try:
diff --git a/pypy/module/_cffi_backend/libraryobj.py
b/pypy/module/_cffi_backend/libraryobj.py
--- a/pypy/module/_cffi_backend/libraryobj.py
+++ b/pypy/module/_cffi_backend/libraryobj.py
@@ -38,9 +38,16 @@
space = self.space
return space.newtext("<clibrary '%s'>" % self.name)
+ def check_closed(self):
+ if self.handle == rffi.cast(DLLHANDLE, 0):
+ raise oefmt(space.w_ValueError,
+ "library '%s' has already been closed",
+ self.name)
+
@unwrap_spec(w_ctype=W_CType, name='text')
def load_function(self, w_ctype, name):
from pypy.module._cffi_backend import ctypeptr, ctypearray
+ self.check_closed()
space = self.space
#
if not isinstance(w_ctype, ctypeptr.W_CTypePtrOrArray):
@@ -60,6 +67,7 @@
@unwrap_spec(w_ctype=W_CType, name='text')
def read_variable(self, w_ctype, name):
+ self.check_closed()
space = self.space
try:
cdata = dlsym(self.handle, name)
@@ -71,6 +79,7 @@
@unwrap_spec(w_ctype=W_CType, name='text')
def write_variable(self, w_ctype, name, w_value):
+ self.check_closed()
space = self.space
try:
cdata = dlsym(self.handle, name)
@@ -80,6 +89,10 @@
name, self.name)
w_ctype.convert_from_object(rffi.cast(rffi.CCHARP, cdata), w_value)
+ def close_lib(self):
+ self.check_closed()
+ self._finalize_()
+
W_Library.typedef = TypeDef(
'_cffi_backend.Library',
@@ -87,6 +100,7 @@
load_function = interp2app(W_Library.load_function),
read_variable = interp2app(W_Library.read_variable),
write_variable = interp2app(W_Library.write_variable),
+ close_lib = interp2app(W_Library.close_lib),
)
W_Library.typedef.acceptable_as_base_class = False
diff --git a/pypy/module/_cffi_backend/test/_backend_test_c.py
b/pypy/module/_cffi_backend/test/_backend_test_c.py
--- a/pypy/module/_cffi_backend/test/_backend_test_c.py
+++ b/pypy/module/_cffi_backend/test/_backend_test_c.py
@@ -1,7 +1,7 @@
# ____________________________________________________________
import sys
-assert __version__ == "1.11.4", ("This test_c.py file is for testing a version"
+assert __version__ == "1.11.5", ("This test_c.py file is for testing a version"
" of cffi that differs from the one that we"
" get from 'import _cffi_backend'")
if sys.version_info < (3,):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit