[pypy-commit] pypy cpyext-cleanup: Raise an exception inside mangle_name() when the name is invalid

rlamy pypy.commits at gmail.com
Wed Jan 4 19:43:21 EST 2017


Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: cpyext-cleanup
Changeset: r89370:75557bb61dfd
Date: 2017-01-05 00:42 +0000
http://bitbucket.org/pypy/pypy/changeset/75557bb61dfd/

Log:	Raise an exception inside mangle_name() when the name is invalid

diff --git a/pypy/module/cpyext/api.py b/pypy/module/cpyext/api.py
--- a/pypy/module/cpyext/api.py
+++ b/pypy/module/cpyext/api.py
@@ -1195,14 +1195,13 @@
     elif name.startswith('_Py'):
         return '_' + prefix + name[3:]
     else:
-        return None
+        raise ValueError("Error converting '%s'" % name)
 
 def generate_decls_and_callbacks(db, prefix=''):
     "NOT_RPYTHON"
     pypy_macros = []
     for name in SYMBOLS_C:
         newname = mangle_name(prefix, name)
-        assert newname, name
         pypy_macros.append('#define %s %s' % (name, newname))
 
     # Generate defines
@@ -1244,7 +1243,6 @@
             if not func:
                 continue
             _name = mangle_name(prefix, name)
-            assert _name is not None, 'error converting %s' % name
             header.append("#define %s %s" % (name, _name))
             restype, args = c_function_signature(db, func)
             header.append("PyAPI_FUNC(%s) %s(%s);" % (restype, name, args))
@@ -1423,7 +1421,7 @@
         for name, func in header_functions.iteritems():
             if not func:
                 continue
-            newname = mangle_name(prefix, name) or name
+            newname = mangle_name(prefix, name)
             deco = entrypoint_lowlevel("cpyext", func.argtypes, newname,
                                         relax=True)
             deco(func.get_wrapper(space))
diff --git a/pypy/module/cpyext/slotdefs.py b/pypy/module/cpyext/slotdefs.py
--- a/pypy/module/cpyext/slotdefs.py
+++ b/pypy/module/cpyext/slotdefs.py
@@ -7,7 +7,7 @@
 from rpython.rlib import rgc # Force registration of gc.collect
 from pypy.module.cpyext.api import (
     cpython_api, generic_cpy_call, PyObject, Py_ssize_t, Py_TPFLAGS_CHECKTYPES,
-    mangle_name, pypy_decl, Py_buffer, Py_bufferP)
+    pypy_decl, Py_buffer, Py_bufferP)
 from pypy.module.cpyext.typeobjectdefs import (
     unaryfunc, ternaryfunc, PyTypeObjectPtr, binaryfunc,
     getattrfunc, getattrofunc, setattrofunc, lenfunc, ssizeargfunc, inquiry,
@@ -351,7 +351,7 @@
         else:
             #do not call twice
             return
-        if self.releasebufferproc:        
+        if self.releasebufferproc:
             func_target = rffi.cast(releasebufferproc, self.releasebufferproc)
             with lltype.scoped_alloc(Py_buffer) as pybuf:
                 pybuf.c_buf = self.ptr
@@ -416,7 +416,7 @@
         size = generic_cpy_call(space, func_target, w_self, index, ptr)
         if size < 0:
             space.fromcache(State).check_and_raise_exception(always=True)
-        buf = CPyBuffer(space, ptr[0], size, w_self, 
+        buf = CPyBuffer(space, ptr[0], size, w_self,
                                releasebuffer=releasebuffer)
         fq.register_finalizer(buf)
         return space.newbuffer(buf)
@@ -522,7 +522,7 @@
     w_type = space.gettypeobject(typedef)
 
     header = pypy_decl
-    if mangle_name('', typedef.name) is None:
+    if not (name.startswith('Py') or name.startswith('_Py')):
         header = None
     handled = False
     # unary functions


More information about the pypy-commit mailing list