def put_setup_refcount_context(self, name):
self.putln('__Pyx_SetupRefcountContext("%s");' % name)
- def put_finish_refcount_context(self, pos, name, retval_cname, err_val):
- self.putln('if (__Pyx_FinishRefcountContext() == -1) {')
- self.putln(self.set_error_info(pos))
- self.putln('__Pyx_AddTraceback("%s");' % name)
- if err_val is not None:
- self.putln('%s = %s;' % (retval_cname, err_val))
- self.putln('}')
+ def put_finish_refcount_context(self):
+ self.putln("__Pyx_FinishRefcountContext();")
class PyrexCodeWriter:
code.putln("%s = NULL;" % Naming.retval_cname)
code.put_label(code.return_label)
# Disabled because of confusion with refcount of global variables -- run ass2cglobal testcase to see
- #code.put_finish_refcount_context(self.pos, env.qualified_name,
- # Naming.retval_cname, "NULL")
+ #code.put_finish_refcount_context()
code.putln("#if CYTHON_REFNANNY")
code.putln("if (__pyx_refchk) {};")
code.putln("#endif")
void (*GOTREF)(void*, PyObject*, int);
void (*GIVEREF)(void*, PyObject*, int);
void* (*NewContext)(const char*, int, const char*);
- int (*FinishContext)(void**);
+ void (*FinishContext)(void**);
} __Pyx_RefnannyAPIStruct;
static __Pyx_RefnannyAPIStruct *__Pyx_Refnanny = NULL;
#define __Pyx_ImportRefcountAPI(name) \
if self.return_type.is_pyobject:
code.put_xgiveref(self.return_type.as_pyobject(Naming.retval_cname))
- code.put_finish_refcount_context(self.pos,
- self.entry.qualified_name,
- Naming.retval_cname,
- err_val)
+ code.put_finish_refcount_context()
if acquire_gil:
code.putln("PyGILState_Release(_save);")
GIVEREF(ctx, obj, lineno)
if obj is not NULL: Py_DECREF(<object>obj)
-cdef int FinishContext(PyObject** ctx) except -1:
+cdef void FinishContext(PyObject** ctx):
cdef PyObject* type = NULL, *value = NULL, *tb = NULL
if ctx == NULL: assert False
if ctx[0] == NULL: assert False # XXX What to do here?
Py_XDECREF(<object>type)
Py_XDECREF(<object>value)
Py_XDECREF(<object>tb)
- raise
finally:
Py_XDECREF(<object>ctx[0])
ctx[0] = NULL
if errors:
print u"%s: %s()" % pos
print errors # raise Error(errors)
- return 0
-
-
-
cdef extern from "Python.h":
object PyCObject_FromVoidPtr(void*, void (*)(void*))
void (*GOTREF)(PyObject*, PyObject*, int)
void (*GIVEREF)(PyObject*, PyObject*, int)
PyObject* (*NewContext)(char*, int, char*) except NULL
- int (*FinishContext)(PyObject**) except -1
+ void (*FinishContext)(PyObject**)
cdef RefnannyAPIStruct api
api.INCREF = INCREF