diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2014-07-31 08:39:50 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2014-07-31 08:39:50 (GMT) |
commit | 27be6e4e9ada6489a2bb9de775cab72378825b2b (patch) | |
tree | c2e372443d6b96e908a4db00bc22d4bd54bdf312 /generic/tclOO.c | |
parent | 1990c76e8d05fcf48cccabb5d2f1a49c3c99ecd1 (diff) | |
parent | f10bee2648e7e87c576a1afe761e8525255d3a7a (diff) | |
download | tcl-robust_async_connect_tests.zip tcl-robust_async_connect_tests.tar.gz tcl-robust_async_connect_tests.tar.bz2 |
merge trunkrobust_async_connect_tests
Diffstat (limited to 'generic/tclOO.c')
-rw-r--r-- | generic/tclOO.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/generic/tclOO.c b/generic/tclOO.c index de00733..02e00c9 100644 --- a/generic/tclOO.c +++ b/generic/tclOO.c @@ -1008,6 +1008,12 @@ ReleaseClassContents( } if (!Deleted(instancePtr)) { Tcl_DeleteCommandFromToken(interp, instancePtr->command); + /* + * Tcl_DeleteCommandFromToken() may have done to whole + * job for us. Roll back and check again. + */ + i--; + continue; } DelRef(instancePtr); } @@ -1280,6 +1286,7 @@ TclOORemoveFromInstances( removeInstance: if (Deleted(clsPtr->thisPtr)) { + DelRef(clsPtr->instances.list[i]); clsPtr->instances.list[i] = NULL; } else { clsPtr->instances.num--; |