pike.git
/
src
/
error.c
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/error.c:12:
#include "array.h" #include "object.h" char *automatic_fatal; JMP_BUF *recoveries=0; ONERROR *onerror_stack=0; my_jmp_buf *init_recovery(JMP_BUF *r) { r->fp=fp;
-
r->sp=sp;
-
r->mark_sp=mark_sp;
+
r->sp=sp
-evaluator_stack
;
+
r->mark_sp=mark_sp
- mark_stack
;
r->previous=recoveries; r->onerror=onerror_stack; recoveries=r; return & ( r->recovery ); } void throw() { if(!recoveries) fatal("No error recovery context.\n"); #ifdef DEBUG
-
if(sp < recoveries->sp)
+
if(sp
- evaluator_stack
< recoveries->sp)
fatal("Error in error.\n"); #endif while(fp != recoveries->fp) { #ifdef DEBUG if(!fp) fatal("Popped out of stack frames.\n"); #endif free_object(fp->current_object); free_program(fp->context.prog); fp = fp->parent_frame; }
-
pop_n_elems(sp - recoveries->sp);
-
mark_sp = recoveries->mark_sp;
+
pop_n_elems(sp -
evaluator_stack -
recoveries->sp);
+
mark_sp =
mark_stack +
recoveries->mark_sp;
while(recoveries->onerror != onerror_stack) { #ifdef DEBUG if(!onerror_stack) fatal("Popped out of onerror stack!\n"); #endif (*onerror_stack->func)(onerror_stack->arg); onerror_stack=onerror_stack->previous; }