summaryrefslogtreecommitdiffstats
path: root/generic/tclOO.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2014-07-31 08:39:50 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2014-07-31 08:39:50 (GMT)
commit27be6e4e9ada6489a2bb9de775cab72378825b2b (patch)
treec2e372443d6b96e908a4db00bc22d4bd54bdf312 /generic/tclOO.c
parent1990c76e8d05fcf48cccabb5d2f1a49c3c99ecd1 (diff)
parentf10bee2648e7e87c576a1afe761e8525255d3a7a (diff)
downloadtcl-robust_async_connect_tests.zip
tcl-robust_async_connect_tests.tar.gz
tcl-robust_async_connect_tests.tar.bz2
Diffstat (limited to 'generic/tclOO.c')
-rw-r--r--generic/tclOO.c7
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--;