From 808eb59fc46f031939d23b07be4d705905d317e4 Mon Sep 17 00:00:00 2001 From: Tim Peters Date: Wed, 7 Aug 2002 20:53:05 +0000 Subject: Added info about the right way to leave the body of a trashcan-protected destructor early. --- Include/object.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Include/object.h b/Include/object.h index 4987e12..19460fe 100644 --- a/Include/object.h +++ b/Include/object.h @@ -706,6 +706,11 @@ mytype_dealloc(mytype *p) Py_TRASHCAN_SAFE_END(p) } +CAUTION: Never return from the middle of the body! If the body needs to +"get out early", put a label immediately before the Py_TRASHCAN_SAFE_END +call, and goto it. Else the call-depth counter (see below) will stay +above 0 forever, and the trashcan will never get emptied. + How it works: The BEGIN macro increments a call-depth counter. So long as this counter is small, the body of the deallocator is run directly without further ado. But if the counter gets large, it instead adds p to a list of -- cgit v0.12