diff options
| author | dgp <dgp@users.sourceforge.net> | 2013-09-19 14:22:37 (GMT) |
|---|---|---|
| committer | dgp <dgp@users.sourceforge.net> | 2013-09-19 14:22:37 (GMT) |
| commit | 10372d985ab747b8475387b41d7a8cbdf857e613 (patch) | |
| tree | 05562337d2bb1336e76c6bc70c52d8db2521542e | |
| parent | 5aee161167696db6b88db2b42a0d8963bb1cda6a (diff) | |
| parent | 657b49a9d1d82445fd0b53afacf3077ef9d1c1eb (diff) | |
| download | tcl-10372d985ab747b8475387b41d7a8cbdf857e613.zip tcl-10372d985ab747b8475387b41d7a8cbdf857e613.tar.gz tcl-10372d985ab747b8475387b41d7a8cbdf857e613.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 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)} { |
