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/tclExecute.c | |
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/tclExecute.c')
-rw-r--r-- | generic/tclExecute.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 559df0b..fc50a74 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -2720,14 +2720,15 @@ TEBCresume( case INST_EXPAND_DROP: /* - * Drops an element of the auxObjList. Does not do any clean up of the - * actual stack. - * - * TODO: POP MAIN STACK BACK TO MARKER + * Drops an element of the auxObjList, popping stack elements to + * restore the stack to the state before the point where the aux + * element was created. */ + CLANG_ASSERT(auxObjList); + objc = CURR_DEPTH - auxObjList->internalRep.ptrAndLongRep.value; POP_TAUX_OBJ(); - NEXT_INST_F(1, 0, 0); + NEXT_INST_V(1, objc, 0); case INST_EXPAND_STKTOP: { int i; |