Commit fcac9282 authored by Dag Sverre Seljebotn's avatar Dag Sverre Seljebotn

refnanny: Disable in nogil functions

parent f4e84e98
......@@ -1068,6 +1068,7 @@ class FuncDefNode(StatNode, BlockNode):
# ----- Automatic lead-ins for certain special functions
if is_getbuffer_slot:
self.getbuffer_init(code)
if not lenv.nogil:
code.put_setup_refcount_context(self.entry.name)
# ----- Fetch arguments
self.generate_argument_parsing_code(env, code)
......@@ -1183,6 +1184,7 @@ class FuncDefNode(StatNode, BlockNode):
# code.putln("/* TODO: decref scope object */")
# ----- Return
# This code is duplicated in ModuleNode.generate_module_init_func
if not lenv.nogil:
default_retval = self.return_type.default_value
err_val = self.error_value()
if err_val is None and default_retval:
......
# Temporary hacky script, should be replaced
# with distutils-based solution.
PYTHONINC=/local/include/python2.5
#PYTHONINC=/local/include/python2.5
PYTHONINC=/usr/include/python2.5
python ../../cython.py refnanny.pyx
gcc -shared -pthread -fPIC -fwrapv -O2 -Wall \
......
from python_ref cimport Py_INCREF, Py_DECREF
cimport python_exc as exc
loglevel = 0
reflog = []
......@@ -69,6 +71,12 @@ cdef public void __Pyx_Refnanny_DECREF(void* ctx, object obj, int lineno):
Py_DECREF(obj)
cdef public int __Pyx_Refnanny_FinishContext(void* ctx) except -1:
cdef exc.PyObject* type, *value, *tb
if exc.PyErr_Occurred():
exc.PyErr_Fetch(&type, &value, &tb)
Py_DECREF(<object>type); Py_DECREF(<object>value); Py_DECREF(<object>tb)
print "cleared!"
print (exc.PyErr_Occurred() == NULL)
obj = <object>ctx
try:
obj.end()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment