summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorericm <ericm>2000-01-21 03:58:16 (GMT)
committerericm <ericm>2000-01-21 03:58:16 (GMT)
commitc2882b5f1594c692fb8c925e0de4b9f3d09252d5 (patch)
tree83e2e5a58bf7e3e0344630090989de95c50ec9d6
parent1816d85fa717e1df558b790c5c324786c314258c (diff)
downloadtcl-c2882b5f1594c692fb8c925e0de4b9f3d09252d5.zip
tcl-c2882b5f1594c692fb8c925e0de4b9f3d09252d5.tar.gz
tcl-c2882b5f1594c692fb8c925e0de4b9f3d09252d5.tar.bz2
* namespace.test: Added test for undefined variables with
namespace which (bug #956). * tclNamesp.c: Added check for undefined variables in NamespaceWhichCmd (bug #956).
-rw-r--r--generic/tclNamesp.c5
-rw-r--r--tests/namespace.test9
2 files changed, 11 insertions, 3 deletions
diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c
index ea7d0cd..478867d 100644
--- a/generic/tclNamesp.c
+++ b/generic/tclNamesp.c
@@ -19,7 +19,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclNamesp.c,v 1.14 2000/01/12 11:12:53 hobbs Exp $
+ * RCS: @(#) $Id: tclNamesp.c,v 1.15 2000/01/21 03:58:16 ericm Exp $
*/
#include "tclInt.h"
@@ -3628,7 +3628,8 @@ NamespaceWhichCmd(dummy, interp, objc, objv)
arg = Tcl_GetString(objv[argIndex]);
variable = Tcl_FindNamespaceVar(interp, arg, (Tcl_Namespace *) NULL,
/*flags*/ 0);
- if (variable != (Tcl_Var) NULL) {
+ if (variable != (Tcl_Var) NULL
+ && !TclIsVarUndefined((Var *)variable)) {
Tcl_GetVariableFullName(interp, variable, Tcl_GetObjResult(interp));
}
break;
diff --git a/tests/namespace.test b/tests/namespace.test
index 5843187..6cecc9e 100644
--- a/tests/namespace.test
+++ b/tests/namespace.test
@@ -11,7 +11,7 @@
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
-# RCS: @(#) $Id: namespace.test,v 1.7 2000/01/12 11:13:25 hobbs Exp $
+# RCS: @(#) $Id: namespace.test,v 1.8 2000/01/21 03:58:17 ericm Exp $
if {[lsearch [namespace children] ::tcltest] == -1} {
package require tcltest
@@ -1041,6 +1041,13 @@ test namespace-34.7 {NamespaceWhichCmd, variable lookup} {
[catch {namespace which -variable ::test_ns_2::noSuchVar} msg] $msg
}
} {::env ::test_ns_3::v3 ::test_ns_2::v2 0 {}}
+test namespace-34.8 {NamespaceWhichCmd, lookup of undefined but traced var} {
+ catch {unset foo}
+ trace variable foo w bar
+ set res [namespace which -variable foo]
+ trace vdelete foo w bar
+ set res
+} {}
test namespace-35.1 {FreeNsNameInternalRep, resulting ref count > 0} {
catch {eval namespace delete [namespace children :: test_ns_*]}