diff options
author | kennykb <kennykb@noemail.net> | 2004-05-03 17:04:29 (GMT) |
---|---|---|
committer | kennykb <kennykb@noemail.net> | 2004-05-03 17:04:29 (GMT) |
commit | 918dcb3b1b4665e53b58bd4702872f0ac42bc987 (patch) | |
tree | e7ce490e7b604bed8884edc92aa5c4595c9e281a /tests/stack.test | |
parent | 84b64fb126cc38e5c1a11e05eef2862af529eecf (diff) | |
download | tcl-918dcb3b1b4665e53b58bd4702872f0ac42bc987.zip tcl-918dcb3b1b4665e53b58bd4702872f0ac42bc987.tar.gz tcl-918dcb3b1b4665e53b58bd4702872f0ac42bc987.tar.bz2 |
* win/tclWin32Dll.c (TclpCheckStackSpace):
* tests/stack.test (stack-3.1): Fix for undetected stack
overflow in TclReExec on Windows. [Bug 947070]
FossilOrigin-Name: 09e1a5fa6322c694673d9899595ba2c5e96dc2e4
Diffstat (limited to 'tests/stack.test')
-rw-r--r-- | tests/stack.test | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/tests/stack.test b/tests/stack.test index 828352b..dfcf9c2 100644 --- a/tests/stack.test +++ b/tests/stack.test @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: stack.test,v 1.15 2002/07/29 00:25:49 msofer Exp $ +# RCS: @(#) $Id: stack.test,v 1.16 2004/05/03 17:04:31 kennykb Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -55,6 +55,36 @@ test stack-2.1 {maxNestingDepth reached on infinite recursion} {minStack2400} { set msg } {too many nested evaluations (infinite loop?)} +# Make sure that there is enough stack to run regexp even if we're +# close to the recursion limit. [Bug 947070] + +test stack-3.1 {enough room for regexp near recursion limit} \ + -constraints { win } \ + -setup { + set ::limit [interp recursionlimit {} 10000] + set ::depth 0 + proc a { max } { + if { [info level] < $max } { + set ::depth [info level] + a $max + } else { + regexp {^ ?} x + } + } + catch { a 10001 } + incr depth -2 + set depth2 $depth + } -body { + list [catch { a $::depth } result] \ + $result [expr { $::depth2 - $::depth }] + } -cleanup { + interp recursionlimit {} $::limit + } -result {0 1 1} + # cleanup ::tcltest::cleanupTests return + +# Local Variables: +# mode: tcl +# End: |