summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2013-09-19 14:22:37 (GMT)
committerdgp <dgp@users.sourceforge.net>2013-09-19 14:22:37 (GMT)
commitbd33f7aed8365be64ec2ffde4950fac52695a0e6 (patch)
tree05562337d2bb1336e76c6bc70c52d8db2521542e
parentb9d177cec41c6ca4abcb019b38e7da7739ded8e7 (diff)
parent071c731c5e45080a89c03c7ae74ec6acf4df59c2 (diff)
downloadtcl-bd33f7aed8365be64ec2ffde4950fac52695a0e6.zip
tcl-bd33f7aed8365be64ec2ffde4950fac52695a0e6.tar.gz
tcl-bd33f7aed8365be64ec2ffde4950fac52695a0e6.tar.bz2
Stop segfault due to OBOE in CompileWord() calls in [dict incr] compiler.
-rw-r--r--generic/tclCompCmds.c2
-rw-r--r--tests/dict.test5
2 files changed, 6 insertions, 1 deletions
diff --git a/generic/tclCompCmds.c b/generic/tclCompCmds.c
index e26f29c..4c4d458 100644
--- a/generic/tclCompCmds.c
+++ b/generic/tclCompCmds.c
@@ -949,7 +949,7 @@ TclCompileDictIncrCmd(
* Emit the key and the code to actually do the increment.
*/
- CompileWord(envPtr, keyTokenPtr, interp, 3);
+ CompileWord(envPtr, keyTokenPtr, interp, 2);
TclEmitInstInt4( INST_DICT_INCR_IMM, incrAmount, envPtr);
TclEmitInt4( dictVarIndex, envPtr);
return TCL_OK;
diff --git a/tests/dict.test b/tests/dict.test
index 3658581..1b1fc31 100644
--- a/tests/dict.test
+++ b/tests/dict.test
@@ -1876,6 +1876,11 @@ test dict-23.4 {CompileWord OBOE} {
} [return [incr n -[linenumber]]] val
}} [linenumber]
} 1
+test dict-23.5 {CompileWord OBOE} {
+ # segfault when buggy
+ apply {{} {tcl::dict::incr foo \
+ [format bar]}}
+} {bar 1}
rename linenumber {}
test dict-24.22 {dict map results (non-compiled)} {