tcl/tcl-dictcrash.patch

24 lines
638 B
Diff

--- generic/tclCompCmds.c
+++ generic/tclCompCmds.c
@@ -1215,7 +1215,7 @@
tokenPtr = TokenAfter(tokenPtr);
}
if (parsePtr->numWords > 4) {
- TclEmitInstInt1(INST_CONCAT1, parsePtr->numWords-2, envPtr);
+ TclEmitInstInt1(INST_CONCAT1, parsePtr->numWords-3, envPtr);
}
/*
--- tests/dict.test
+++ tests/dict.test
@@ -414,6 +414,9 @@
catch {unset dictVar}
set result
} {1 {can't set "dictVar": variable is array}}
+test dict-13.10 {compiled dict append: crash case} {
+ apply {{} {dict append dictVar a o k}}
+} {a ok}
test dict-14.1 {dict for command: syntax} {
list [catch {dict for} msg] $msg