Message16331
Logged In: YES
user_id=459565
Okay, I had a few minutes free. The problem is that
slots are being deallocated too early -- before tp_dealloc.
I'm attaching a patch that corrects this at the expense of
having to travel up the path of base class tp_dealloc
entries twice. Here is the new sequence of actions:
1) Find the nearest base with a different tp_dealloc
2) Clear weakrefs
3) Call finalizer
4) Check to see if object was resurrected, if so stop
5) Clear all slots up to nearest base with a different
tp_dealloc
6) DECREF dict pointer, if necessary
7) proceed as usual... (call basedealloc, DECREF type, etc.)
Without my patch, step number 5 is done as part of step
1, and bad things happen.
|
|
Date |
User |
Action |
Args |
2007-08-23 14:13:50 | admin | link | issue751998 messages |
2007-08-23 14:13:50 | admin | create | |
|