def put_giveref(self, cname):
self.putln("__Pyx_GIVEREF(%s);" % cname)
+ def put_xgiveref(self, cname):
+ self.putln("__Pyx_XGIVEREF(%s);" % cname)
+
def put_incref(self, cname, type):
self.putln("__Pyx_INCREF(%s);" % self.as_pyobject(cname, type))
refcount_utility_code = UtilityCode(proto="""
#ifdef CYTHON_REFNANNY
-
void __Pyx_Refnanny_INCREF(void*, PyObject*, int);
void __Pyx_Refnanny_GOTREF(void*, PyObject*, int);
void __Pyx_Refnanny_GIVEREF(void*, PyObject*, int);
void __Pyx_Refnanny_DECREF(void*, PyObject*, int);
void* __Pyx_Refnanny_NewContext(char*, int);
int __Pyx_Refnanny_FinishContext(void*);
-
#define __Pyx_INCREF(r) __Pyx_Refnanny_INCREF(__pyx_refchk, r, __LINE__)
#define __Pyx_GOTREF(r) __Pyx_Refnanny_GOTREF(__pyx_refchk, r, __LINE__)
#define __Pyx_GIVEREF(r) __Pyx_Refnanny_GIVEREF(__pyx_refchk, r, __LINE__)
#define __Pyx_SetupRefcountContext(name) \
void* __pyx_refchk = __Pyx_Refnanny_NewContext(name, __LINE__)
#define __Pyx_FinishRefcountContext() __Pyx_Refnanny_FinishContext(__pyx_refchk)
-
#else
-
#define __Pyx_INCREF(r) Py_INCREF(r)
#define __Pyx_GOTREF(r)
#define __Pyx_GIVEREF(r)
#define __Pyx_XDECREF(r) Py_XDECREF(r)
#define __Pyx_SetupRefcountContext(name)
#define __Pyx_FinishRefcountContext() 0
-
#endif /* CYTHON_REFNANNY */
+#define __Pyx_XGIVEREF(r) (r ? __Pyx_GIVEREF(r) : 0)
""")
if err_val is None and default_retval:
err_val = default_retval
if self.return_type.is_pyobject:
- code.put_giveref(Naming.retval_cname)
+ code.put_xgiveref(Naming.retval_cname)
if err_val is None:
code.putln('__Pyx_FinishRefcountContext();')
else:
-cat <<EOF > ../../Cython/Compiler/DebugFlags.py
-debug_disposal_code = 0
-debug_temp_alloc = 0
-debug_coercion = 0
-
-debug_refnanny = 0
-EOF
+# Temporary hacky script, should be replaced
+# with distutils-based solution.
+PYTHONINC=/local/include/python2.5
python ../../cython.py refnanny.pyx
gcc -shared -pthread -fPIC -fwrapv -O2 -Wall \
- -fno-strict-aliasing -I/local/include/python2.5 \
+ -fno-strict-aliasing -I$PYTHONINC \
-o refnanny.so -I. refnanny.c
-
-cat <<EOF > ../../Cython/Compiler/DebugFlags.py
-debug_disposal_code = 0
-debug_temp_alloc = 0
-debug_coercion = 0
-
-debug_refnanny = 1
-EOF