summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsebres <sebres@users.sourceforge.net>2022-04-26 12:28:01 (GMT)
committersebres <sebres@users.sourceforge.net>2022-04-26 12:28:01 (GMT)
commitba82b0c9afd6e91aa97e13a95cf1a2ee4fcd4097 (patch)
tree98d87a2e30b5bca5076898da247a9a699a528c2d
parent022866233a63e9133701ff21ca684cb009c171fb (diff)
parent2ce077e7c8a82332c62a598756f2de7dffb17376 (diff)
downloadtcl-ba82b0c9afd6e91aa97e13a95cf1a2ee4fcd4097.zip
tcl-ba82b0c9afd6e91aa97e13a95cf1a2ee4fcd4097.tar.gz
tcl-ba82b0c9afd6e91aa97e13a95cf1a2ee4fcd4097.tar.bz2
closes bug [27520c9b17]
-rw-r--r--generic/tclCompCmdsSZ.c3
-rw-r--r--tests/error.test7
2 files changed, 10 insertions, 0 deletions
diff --git a/generic/tclCompCmdsSZ.c b/generic/tclCompCmdsSZ.c
index 8828b59..4c325c2 100644
--- a/generic/tclCompCmdsSZ.c
+++ b/generic/tclCompCmdsSZ.c
@@ -2931,6 +2931,9 @@ TclCompileTryCmd(
goto failedToCompile;
}
finallyToken = TokenAfter(tokenPtr);
+ if (finallyToken->type != TCL_TOKEN_SIMPLE_WORD) {
+ goto failedToCompile;
+ }
} else {
goto failedToCompile;
}
diff --git a/tests/error.test b/tests/error.test
index a111c80..d5ce528 100644
--- a/tests/error.test
+++ b/tests/error.test
@@ -351,6 +351,13 @@ test error-9.4 {try (ok, non-empty result) with on handler} {
test error-9.5 {try (ok, non-empty result) with on ok handler} {
try { list a b c } on ok {} { list d e f }
} {d e f}
+test error-9.6 {try (compilation of simple finaly token only, bug [27520c9b17])} -body {
+ set b {}; set l {}
+ try {lappend l error} finally [lappend l set b]
+ list $l $b
+} -cleanup {
+ unset -nocomplain b l
+} -result {{set b error} {}}
# simple try tests - "on" handler matching