summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiguel Sofer <miguel.sofer@gmail.com>2009-05-08 02:21:09 (GMT)
committerMiguel Sofer <miguel.sofer@gmail.com>2009-05-08 02:21:09 (GMT)
commitb0db7876f6b3796fdaaf44512cf1fb86966b870d (patch)
tree05ecac66766da24500459f542ebea7be4a73fb27
parent7592bff0075283d77566536c9bea32df7073e73d (diff)
downloadtcl-b0db7876f6b3796fdaaf44512cf1fb86966b870d.zip
tcl-b0db7876f6b3796fdaaf44512cf1fb86966b870d.tar.gz
tcl-b0db7876f6b3796fdaaf44512cf1fb86966b870d.tar.bz2
* generic/tclObj.c (Tcl_GetCommandFromObj): fix for bug [2785893],
insure that a command in a deleted namespace cannot be found through a cached name.
-rw-r--r--ChangeLog6
-rw-r--r--generic/tclObj.c3
2 files changed, 7 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 993e6d5..76314a1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
-2009-04-30 Miguel Sofer <msofer@users.sf.net>
+2009-05-07 Miguel Sofer <msofer@users.sf.net>
+ * generic/tclObj.c (Tcl_GetCommandFromObj): fix for bug [2785893],
+ insure that a command in a deleted namespace cannot be found
+ through a cached name.
+
* generic/tclBasic.c: Let coroutines start with a much smaller
* generic/tclCompile.h: stack: 200 words (previously was 2000,
* generic/tclExecute.c: the same as interps)
diff --git a/generic/tclObj.c b/generic/tclObj.c
index e130dbb..f143eb2 100644
--- a/generic/tclObj.c
+++ b/generic/tclObj.c
@@ -13,7 +13,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclObj.c,v 1.151 2009/02/10 22:49:48 nijtmans Exp $
+ * RCS: @(#) $Id: tclObj.c,v 1.152 2009/05/08 02:21:09 msofer Exp $
*/
#include "tclInt.h"
@@ -3554,6 +3554,7 @@ Tcl_GetCommandFromObj(
|| (cmdPtr = resPtr->cmdPtr, cmdPtr->cmdEpoch != resPtr->cmdEpoch)
|| (interp != cmdPtr->nsPtr->interp)
|| (cmdPtr->flags & CMD_IS_DELETED)
+ || (cmdPtr->nsPtr->flags & NS_DYING)
|| ((resPtr->refNsPtr != NULL) &&
(((refNsPtr = (Namespace *) TclGetCurrentNamespace(interp))
!= resPtr->refNsPtr)