diff options
author | dgp <dgp@users.sourceforge.net> | 2013-09-19 14:06:46 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2013-09-19 14:06:46 (GMT) |
commit | 071c731c5e45080a89c03c7ae74ec6acf4df59c2 (patch) | |
tree | b6ccdf3dfa15de333b21a9a81e48bebe7e78c674 | |
parent | 635d8c961aa06ec17403483a0ff3c0a3d524f3d1 (diff) | |
download | tcl-071c731c5e45080a89c03c7ae74ec6acf4df59c2.zip tcl-071c731c5e45080a89c03c7ae74ec6acf4df59c2.tar.gz tcl-071c731c5e45080a89c03c7ae74ec6acf4df59c2.tar.bz2 |
Stop segfault due to OBOE in CompileWord() calls in [dict incr] compiler.
-rw-r--r-- | generic/tclCompCmds.c | 2 | ||||
-rw-r--r-- | tests/dict.test | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/generic/tclCompCmds.c b/generic/tclCompCmds.c index 260bd28..3445c09 100644 --- a/generic/tclCompCmds.c +++ b/generic/tclCompCmds.c @@ -806,7 +806,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 83f1ca7..fec000d 100644 --- a/tests/dict.test +++ b/tests/dict.test @@ -1254,6 +1254,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 {} |