diff options
author | dkf <donal.k.fellows@manchester.ac.uk> | 2013-06-05 07:19:02 (GMT) |
---|---|---|
committer | dkf <donal.k.fellows@manchester.ac.uk> | 2013-06-05 07:19:02 (GMT) |
commit | 68d7745b270a3cd158d4f2140b321c3dfa3b0f5f (patch) | |
tree | 9fd8c663b8cbd76efefec52f9614115721d587b0 /tests/for.test | |
parent | 2a3000c25e6712d2bc2e4c1f631fdf6a22b41547 (diff) | |
download | tcl-68d7745b270a3cd158d4f2140b321c3dfa3b0f5f.zip tcl-68d7745b270a3cd158d4f2140b321c3dfa3b0f5f.tar.gz tcl-68d7745b270a3cd158d4f2140b321c3dfa3b0f5f.tar.bz2 |
Stack cleanup works now even in the most evil expansion cases.
Diffstat (limited to 'tests/for.test')
-rw-r--r-- | tests/for.test | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/for.test b/tests/for.test index cfba1fe..c5803ee 100644 --- a/tests/for.test +++ b/tests/for.test @@ -882,6 +882,36 @@ test for-7.4 {Bug 3614226: ensure that continue cleans up the expansion stack} m expr {$end - $tmp} }} } 0 +test for-7.5 {Bug 3614226: ensure that break cleans up the expansion stack} memory { + apply {{} { + set l [lrepeat 50 p q r] + # Can't use [memtest]; must be careful when we change stack frames + set end [meminfo] + for {set i 0} {$i < 5} {incr i} { + for {set x 0} {[incr x]<50} {} { + puts [puts {*}$l {*}[puts a b c {*}$l {*}[break] d e f]] + } + set tmp $end + set end [meminfo] + } + expr {$end - $tmp} + }} +} 0 +test for-7.6 {Bug 3614226: ensure that continue cleans up the expansion stack} memory { + apply {{} { + set l [lrepeat 50 p q r] + # Can't use [memtest]; must be careful when we change stack frames + set end [meminfo] + for {set i 0} {$i < 5} {incr i} { + for {set x 0} {[incr x]<50} {} { + puts [puts {*}$l {*}[puts a b c {*}$l {*}[continue] d e f]] + } + set tmp $end + set end [meminfo] + } + expr {$end - $tmp} + }} +} 0 # cleanup ::tcltest::cleanupTests |