]> granicus.if.org Git - python/commitdiff
Patch #448194: Debuging negative reference counts.
authorMartin v. Löwis <martin@v.loewis.de>
Sun, 5 Aug 2001 21:23:03 +0000 (21:23 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Sun, 5 Aug 2001 21:23:03 +0000 (21:23 +0000)
Include/object.h

index d81d4c20a29e97765a41b430db6d6ad7148dda1e..1f749ec9bd678f59052931cd93fa015585fac48a 100644 (file)
@@ -489,11 +489,12 @@ extern DL_IMPORT(long) _Py_RefTotal;
 #endif /* !Py_TRACE_REFS */
 
 #define Py_INCREF(op) (_Py_RefTotal++, (op)->ob_refcnt++)
-#define Py_DECREF(op) \
-       if (--_Py_RefTotal, (--((op)->ob_refcnt) != 0)) \
-               ; \
-       else \
-               _Py_Dealloc((PyObject *)(op))
+  /* under Py_REF_DEBUG: also log negative ref counts after Py_DECREF() !! */
+#define Py_DECREF(op)                                                  \
+       if (--_Py_RefTotal, 0 < (--((op)->ob_refcnt))) ;                        \
+       else if (0 == (op)->ob_refcnt) _Py_Dealloc( (PyObject*)(op));   \
+       else (void)fprintf( stderr, "%s:%i negative ref count %i\n",    \
+                          __FILE__, __LINE__, (op)->ob_refcnt)
 #else /* !Py_REF_DEBUG */
 
 #ifdef COUNT_ALLOCS