summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2024-02-06 14:58:55 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2024-02-06 14:58:55 (GMT)
commit29caec6e52a4bd2f355d954f7fe7ab52a08970b9 (patch)
treeeb1b319efa47848972592cdf501e0c5cb1cbbed2
parent54c5c0e6bbd3b0c8b2f912279471c2c83f2519ca (diff)
parent6ae9b07791e4bc024b8fea78a48c60df7e269d12 (diff)
downloadtcl-29caec6e52a4bd2f355d954f7fe7ab52a08970b9.zip
tcl-29caec6e52a4bd2f355d954f7fe7ab52a08970b9.tar.gz
tcl-29caec6e52a4bd2f355d954f7fe7ab52a08970b9.tar.bz2
Fix [86b3c15f0c]: ::unknown has infinite recursion in a corner case
-rw-r--r--library/init.tcl4
1 files changed, 2 insertions, 2 deletions
diff --git a/library/init.tcl b/library/init.tcl
index a98dbb8..3200955 100644
--- a/library/init.tcl
+++ b/library/init.tcl
@@ -371,14 +371,14 @@ proc unknown args {
return -options $::tcl::UnknownOptions $::tcl::UnknownResult
}
- set ret [catch {set candidates [info commands $name*]} msg]
+ set ret [catch [list uplevel 1 [list info commands $name*]] candidates]
if {$name eq "::"} {
set name ""
}
if {$ret != 0} {
dict append opts -errorinfo \
"\n (expanding command prefix \"$name\" in unknown)"
- return -options $opts $msg
+ return -options $opts $candidates
}
# Filter out bogus matches when $name contained
# a glob-special char [Bug 946952]