pike.git / src / error.c

version» Context lines:

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;    }