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 | e2aebdd0bfef45036c0e1242c55efd86773ecca4 (patch) | |
tree | 9fd8c663b8cbd76efefec52f9614115721d587b0 /generic/tclCompile.h | |
parent | 63a81f0f749c1cc9965874146ba78f865ad5393a (diff) | |
download | tcl-e2aebdd0bfef45036c0e1242c55efd86773ecca4.zip tcl-e2aebdd0bfef45036c0e1242c55efd86773ecca4.tar.gz tcl-e2aebdd0bfef45036c0e1242c55efd86773ecca4.tar.bz2 |
Stack cleanup works now even in the most evil expansion cases.
Diffstat (limited to 'generic/tclCompile.h')
-rw-r--r-- | generic/tclCompile.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/generic/tclCompile.h b/generic/tclCompile.h index 75de025..15b5477 100644 --- a/generic/tclCompile.h +++ b/generic/tclCompile.h @@ -120,6 +120,11 @@ typedef struct ExceptionAux { * we can't currently discard them except by * doing INST_INVOKE_EXPANDED; this is a known * problem. */ + int expandTargetDepth; /* The stack depth expected at the outermost + * expansion within the loop. Not meaningful + * if there have are no open expansions + * between the looping level and the point of + * jump issue. */ int numBreakTargets; /* The number of [break]s that want to be * targeted to the place where this loop * exception will be bound to. */ @@ -987,6 +992,8 @@ MODULE_SCOPE ByteCode * TclCompileObj(Tcl_Interp *interp, Tcl_Obj *objPtr, */ MODULE_SCOPE void TclCleanupByteCode(ByteCode *codePtr); +MODULE_SCOPE void TclCleanupStackForBreakContinue(CompileEnv *envPtr, + ExceptionAux *auxPtr); MODULE_SCOPE void TclCompileCmdWord(Tcl_Interp *interp, Tcl_Token *tokenPtr, int count, CompileEnv *envPtr); |