summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsebres <sebres@users.sourceforge.net>2024-07-14 19:03:38 (GMT)
committersebres <sebres@users.sourceforge.net>2024-07-14 19:03:38 (GMT)
commitc3950a63f7dfe3f754ab1cb5195dbe3a5f28ece3 (patch)
tree52d859bb54018f238c05280ea9db33dab0ca1f3e
parenta1039fff264296e9f3132a9354f8b84e2a732cf9 (diff)
downloadtcl-c3950a63f7dfe3f754ab1cb5195dbe3a5f28ece3.zip
tcl-c3950a63f7dfe3f754ab1cb5195dbe3a5f28ece3.tar.gz
tcl-c3950a63f7dfe3f754ab1cb5195dbe3a5f28ece3.tar.bz2
amend to [3d8bf31bdc], ultimately fixes [0e4b7fce57]: [info vars] should not resolve global vars in namespace by simple pattern too (see info-19.8 test);
added tests covering the behaviour
-rw-r--r--generic/tclVar.c11
-rw-r--r--tests/info.test23
2 files changed, 23 insertions, 11 deletions
diff --git a/generic/tclVar.c b/generic/tclVar.c
index 053b1a1..e939797 100644
--- a/generic/tclVar.c
+++ b/generic/tclVar.c
@@ -5998,7 +5998,6 @@ TclInfoVarsCmd(
Tcl_HashSearch search;
Var *varPtr;
Namespace *nsPtr;
- Namespace *globalNsPtr = (Namespace *) Tcl_GetGlobalNamespace(interp);
Namespace *currNsPtr = (Namespace *) Tcl_GetCurrentNamespace(interp);
Tcl_Obj *listPtr, *elemObjPtr, *varNamePtr;
int specificNsInPattern = 0;/* Init. to avoid compiler warning. */
@@ -6079,16 +6078,6 @@ TclInfoVarsCmd(
}
Tcl_ListObjAppendElement(interp, listPtr, elemObjPtr);
}
- } else if ((nsPtr != globalNsPtr) && !specificNsInPattern) {
- varPtr = VarHashFindVar(&globalNsPtr->varTable,
- simplePatternPtr);
- if (varPtr) {
- if (!TclIsVarUndefined(varPtr)
- || TclIsVarNamespaceVar(varPtr)) {
- Tcl_ListObjAppendElement(interp, listPtr,
- VarHashGetKey(varPtr));
- }
- }
}
} else {
/*
diff --git a/tests/info.test b/tests/info.test
index 38fa5f2..42ceafc 100644
--- a/tests/info.test
+++ b/tests/info.test
@@ -2396,6 +2396,29 @@ test info-33.35 {{*}, literal, simple, bytecompiled} -body {
} -result {type source line 2389 file info.test cmd {info frame 0} proc ::foo::bar level 0}
# -------------------------------------------------------------------------
+
+test info-19.7 {info vars: bug [0e4b7fce57], TIP #278 - no global vars resolve} -setup {
+ catch {namespace delete x}
+} -body {
+ namespace eval x {info vars}
+} -cleanup {
+ namespace delete x
+} -result {}
+test info-19.8 {info vars: bug [0e4b7fce57], TIP #278 - no global vars resolve} -setup {
+ catch {namespace delete x}
+} -body {
+ namespace eval x {info vars tcl_platform}
+} -cleanup {
+ namespace delete x
+} -result {}
+test info-19.9 {info vars: global vars resolved by pattern} -setup {
+ catch {namespace delete x}
+} -body {
+ namespace eval x {info vars ::tcl_platform}
+} -cleanup {
+ namespace delete x
+} -result {::tcl_platform}
+
namespace eval ::testinfocmdtype {
apply {cmds {
foreach c $cmds {rename $c {}}