# HG changeset patch # User Gerd Moellmann # Date 941837233 0 # Node ID 6527989cb214bd448c09ae9558325010679251e9 # Parent 7b0217d9259c18266c51ce6e9317e9ecd51a000a (struct catchtag): Add member byte_stack. (internal_catch, Fcondition_case, internal_condition_case) (internal_condition_case_1: Save value of byte_stack_list in catchtag. (unwind_to_catch): Restore byte_stack_list from catchtag. diff -r 7b0217d9259c -r 6527989cb214 src/eval.c --- a/src/eval.c Fri Nov 05 21:26:42 1999 +0000 +++ b/src/eval.c Fri Nov 05 21:27:13 1999 +0000 @@ -81,6 +81,7 @@ int lisp_eval_depth; int pdlcount; int poll_suppress_count; + struct byte_stack *byte_stack; }; struct catchtag *catchlist; @@ -922,6 +923,7 @@ c.pdlcount = specpdl_ptr - specpdl; c.poll_suppress_count = poll_suppress_count; c.gcpro = gcprolist; + c.byte_stack = byte_stack_list; catchlist = &c; /* Call FUNC. */ @@ -974,6 +976,7 @@ } while (! last_time); + byte_stack_list = catch->byte_stack; gcprolist = catch->gcpro; #ifdef DEBUG_GCPRO if (gcprolist != 0) @@ -1085,6 +1088,7 @@ c.pdlcount = specpdl_ptr - specpdl; c.poll_suppress_count = poll_suppress_count; c.gcpro = gcprolist; + c.byte_stack = byte_stack_list; if (_setjmp (c.jmp)) { if (!NILP (h.var)) @@ -1145,6 +1149,7 @@ c.pdlcount = specpdl_ptr - specpdl; c.poll_suppress_count = poll_suppress_count; c.gcpro = gcprolist; + c.byte_stack = byte_stack_list; if (_setjmp (c.jmp)) { return (*hfun) (c.val); @@ -1184,6 +1189,7 @@ c.pdlcount = specpdl_ptr - specpdl; c.poll_suppress_count = poll_suppress_count; c.gcpro = gcprolist; + c.byte_stack = byte_stack_list; if (_setjmp (c.jmp)) { return (*hfun) (c.val);