bpo-38070: Enhance visit_decref() debug trace (GH-16631) · python/cpython@4d5f94b (original) (raw)

Original file line number Diff line number Diff line change
@@ -373,9 +373,9 @@ update_refs(PyGC_Head *containers)
373 373
374 374 /* A traversal callback for subtract_refs. */
375 375 static int
376 -visit_decref(PyObject *op, void *data)
376 +visit_decref(PyObject *op, void *parent)
377 377 {
378 -_PyObject_ASSERT(op, !_PyObject_IsFreed(op));
378 +_PyObject_ASSERT(_PyObject_CAST(parent), !_PyObject_IsFreed(op));
379 379
380 380 if (PyObject_IS_GC(op)) {
381 381 PyGC_Head *gc = AS_GC(op);
@@ -401,10 +401,11 @@ subtract_refs(PyGC_Head *containers)
401 401 traverseproc traverse;
402 402 PyGC_Head *gc = GC_NEXT(containers);
403 403 for (; gc != containers; gc = GC_NEXT(gc)) {
404 -traverse = Py_TYPE(FROM_GC(gc))->tp_traverse;
404 +PyObject *op = FROM_GC(gc);
405 +traverse = Py_TYPE(op)->tp_traverse;
405 406 (void) traverse(FROM_GC(gc),
406 407 (visitproc)visit_decref,
407 -NULL);
408 +op);
408 409 }
409 410 }
410 411