summaryrefslogtreecommitdiffstats
path: root/generic/tclExecute.c
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2013-06-05 08:11:06 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2013-06-05 08:11:06 (GMT)
commit4265e044139d2dd3217a93741524cd31d7d4fa84 (patch)
tree1c78cdffefc59b1c8cffdea512f701b5eaffa9be /generic/tclExecute.c
parent6f640f9e5701a60ac0fbde981742fd3a80f59d18 (diff)
parent984c4923d6abb322e755dcde5b14bc19747eb8b8 (diff)
downloadtcl-4265e044139d2dd3217a93741524cd31d7d4fa84.zip
tcl-4265e044139d2dd3217a93741524cd31d7d4fa84.tar.gz
tcl-4265e044139d2dd3217a93741524cd31d7d4fa84.tar.bz2
[Bugs 2835313, 3614226]: Complete the construction of break/continue compilers
that get the stack cleanup right, even when there's expansion going on.
Diffstat (limited to 'generic/tclExecute.c')
-rw-r--r--generic/tclExecute.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index 8c87364..98ce51e 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -2718,6 +2718,18 @@ TEBCresume(
PUSH_TAUX_OBJ(objPtr);
NEXT_INST_F(1, 0, 0);
+ case INST_EXPAND_DROP:
+ /*
+ * 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_V(1, objc, 0);
+
case INST_EXPAND_STKTOP: {
int i;
ptrdiff_t moved;