diff options
author | dkf <donal.k.fellows@manchester.ac.uk> | 2015-05-15 13:54:52 (GMT) |
---|---|---|
committer | dkf <donal.k.fellows@manchester.ac.uk> | 2015-05-15 13:54:52 (GMT) |
commit | c9e70a39012f9deb925aa75ae77b28e1997783e7 (patch) | |
tree | cc264c27ab55b00dfc7696ee502ec9afabf2dfb3 /generic/tclOO.c | |
parent | c11a7a6b0838257de896613e697f095289c7025e (diff) | |
download | tcl-c9e70a39012f9deb925aa75ae77b28e1997783e7.zip tcl-c9e70a39012f9deb925aa75ae77b28e1997783e7.tar.gz tcl-c9e70a39012f9deb925aa75ae77b28e1997783e7.tar.bz2 |
[9dd1bd7a74] Ensure that [self] returns a sensible value in a destructor even when construction didn't complete.
Diffstat (limited to 'generic/tclOO.c')
-rw-r--r-- | generic/tclOO.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/generic/tclOO.c b/generic/tclOO.c index 77e668b..e2ef1ae 100644 --- a/generic/tclOO.c +++ b/generic/tclOO.c @@ -1675,10 +1675,13 @@ Tcl_NewObjectInstance( /* * Take care to not delete a deleted object; that would be - * bad. [Bug 2903011] + * bad. [Bug 2903011] Also take care to make sure that we have + * the name of the command before we delete it. [Bug + * 9dd1bd7a74] */ if (!Deleted(oPtr)) { + (void) TclOOObjectName(interp, oPtr); Tcl_DeleteCommandFromToken(interp, oPtr->command); } return NULL; @@ -1821,10 +1824,12 @@ FinalizeAlloc( /* * Take care to not delete a deleted object; that would be bad. [Bug - * 2903011] + * 2903011] Also take care to make sure that we have the name of the + * command before we delete it. [Bug 9dd1bd7a74] */ if (!Deleted(oPtr)) { + (void) TclOOObjectName(interp, oPtr); Tcl_DeleteCommandFromToken(interp, oPtr->command); } DelRef(oPtr); |