diff options
Diffstat (limited to 'src/var.c')
-rw-r--r-- | src/var.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/var.c b/src/var.c index 40bd3fd..f456fbd 100644 --- a/src/var.c +++ b/src/var.c @@ -144,8 +144,7 @@ INIT { } RESET { - while (localvar_stack) - poplocalvars(0); + unwindlocalvars(0); } #endif @@ -570,7 +569,7 @@ poplocalvars(int keep) /* * Create a new localvar environment. */ -void pushlocalvars(void) +struct localvar_list *pushlocalvars(void) { struct localvar_list *ll; @@ -580,6 +579,15 @@ void pushlocalvars(void) ll->next = localvar_stack; localvar_stack = ll; INTON; + + return ll->next; +} + + +void unwindlocalvars(struct localvar_list *stop) +{ + while (localvar_stack != stop) + poplocalvars(0); } |