diff options
Diffstat (limited to 'src/lisp/ao_lisp_eval.c')
| -rw-r--r-- | src/lisp/ao_lisp_eval.c | 6 | 
1 files changed, 5 insertions, 1 deletions
| diff --git a/src/lisp/ao_lisp_eval.c b/src/lisp/ao_lisp_eval.c index 3af56796..6f56a120 100644 --- a/src/lisp/ao_lisp_eval.c +++ b/src/lisp/ao_lisp_eval.c @@ -122,7 +122,8 @@ ao_lisp_stack_push(void)  static void  ao_lisp_stack_pop(void)  { -	ao_poly	prev; +	ao_poly			prev; +	struct ao_lisp_frame	*prev_frame;  	if (!ao_lisp_stack)  		return; @@ -131,10 +132,13 @@ ao_lisp_stack_pop(void)  	ao_lisp_stack_free_list = ao_lisp_stack;  	ao_lisp_stack = ao_lisp_poly_stack(prev); +	prev_frame = ao_lisp_frame_current;  	if (ao_lisp_stack)  		ao_lisp_frame_current = ao_lisp_poly_frame(ao_lisp_stack->frame);  	else  		ao_lisp_frame_current = NULL; +	if (ao_lisp_frame_current != prev_frame) +		ao_lisp_frame_free(prev_frame);  	DBG_OUT();  	DBGI("stack pop\n");  	DBG_FRAMES(); | 
