Branch: Tag:

1995-10-11

1995-10-11 13:00:52 by Fredrik Hübinette (Hubbe) <hubbe@hubbe.net>

committing

Rev: README:1.1
Rev: bin/create_testsuite:1.3
Rev: bin/hilfe.lpc:1.2
Rev: bin/rsif:1.2
Rev: bin/uhttpd.lpc:1.2
Rev: doc/simulated/open:1.1
Rev: lib/master.lpc:1.2
Rev: lib/simulate.lpc:1.4
Rev: lib/testsuite.lpc:1.3
Rev: src/BUGS:1.3
Rev: src/Makefile.in:1.6
Rev: src/Makefile.in.src:1.2
Rev: src/README:1.2
Rev: src/add_efun.c:1.2
Rev: src/add_efun.h:1.2
Rev: src/array.c:1.4
Rev: src/array.h:1.2
Rev: src/backend.c:1.3
Rev: src/backend.h:1.2
Rev: src/builtin_efuns.c:1.2
Rev: src/builtin_efuns.h:1.2
Rev: src/call_out.c:1.5
Rev: src/call_out.h:1.2
Rev: src/callback.c:1.2
Rev: src/callback.h:1.2
Rev: src/config.h:1.6
Rev: src/configure.in:1.9
Rev: src/debug.c:1.4
Rev: src/debug.h:1.4
Rev: src/docode.c:1.4
Rev: src/docode.h:1.2
Rev: src/dynamic_buffer.c:1.3
Rev: src/dynamic_buffer.h:1.2
Rev: src/efun.h:1.2
Rev: src/error.c:1.2
Rev: src/error.h:1.2
Rev: src/fd_control.c:1.2
Rev: src/fd_control.h:1.2
Rev: src/fsort.c:1.2
Rev: src/fsort.h:1.2
Rev: src/global.h:1.2
Rev: src/hashtable.c:1.2
Rev: src/hashtable.h:1.2
Rev: src/interpret.c:1.5
Rev: src/interpret.h:1.2
Rev: src/language.y:1.3
Rev: src/las.c:1.3
Rev: src/las.h:1.3
Rev: src/lex.c:1.3
Rev: src/lex.h:1.2
Rev: src/list.c:1.3
Rev: src/list.h:1.2
Rev: src/lpc_signal.c:1.1
Rev: src/lpc_signal.h:1.1
Rev: src/lpc_types.c:1.3
Rev: src/lpc_types.h:1.2
Rev: src/machine.h.in:1.3
Rev: src/macros.h:1.4
Rev: src/main.c:1.8
Rev: src/main.h:1.2
Rev: src/mapping.c:1.4
Rev: src/mapping.h:1.2
Rev: src/memory.c:1.3
Rev: src/memory.h:1.2
Rev: src/module.c:1.2
Rev: src/module.h:1.2
Rev: src/modules/files/Makefile.in:1.3
Rev: src/modules/files/Makefile.in.src:1.2
Rev: src/modules/files/configure.in:1.5
Rev: src/modules/files/datagram.c:1.2
Rev: src/modules/files/efuns.c:1.4
Rev: src/modules/files/file.c:1.5
Rev: src/modules/files/file.h:1.3
Rev: src/modules/files/file_machine.h.in:1.3
Rev: src/modules/files/socket.c:1.6
Rev: src/modules/math/Makefile.in:1.4
Rev: src/modules/math/Makefile.in.src:1.3
Rev: src/modules/math/math.c:1.2
Rev: src/modules/regexp/Makefile.in:1.3
Rev: src/modules/regexp/Makefile.in.src:1.2
Rev: src/modules/regexp/glue.c:1.2
Rev: src/modules/regexp/regexp.h:1.2
Rev: src/modules/sprintf/Makefile.in:1.3
Rev: src/modules/sprintf/Makefile.in.src:1.2
Rev: src/modules/sprintf/sprintf.c:1.2
Rev: src/object.c:1.3
Rev: src/object.h:1.2
Rev: src/opcodes.c:1.6
Rev: src/opcodes.h:1.2
Rev: src/operators.c:1.3
Rev: src/operators.h:1.2
Rev: src/otable.h:1.2
Rev: src/port.c:1.9
Rev: src/port.h:1.4
Rev: src/program.h:1.2
Rev: src/rusage.c:1.3
Rev: src/rusage.h:1.2
Rev: src/stralloc.c:1.3
Rev: src/stralloc.h:1.3
Rev: src/stuff.c:1.2
Rev: src/stuff.h:1.2
Rev: src/svalue.c:1.4
Rev: src/svalue.h:1.2
Rev: src/todo:1.2
Rev: src/types.h:1.6
Rev: src/ualarm.c:1.2

1: + /*\ + ||| This file a part of uLPC, and is copyright by Fredrik Hubinette + ||| uLPC is distributed as GPL (General Public License) + ||| See the files COPYING and DISCLAIMER for more information. + \*/   #include <stdio.h>   #include "global.h"   #include "macros.h"
9:   #include "object.h"      char *automatic_fatal; - JMP_BUF *recoveries; + JMP_BUF *recoveries=0; + ONERROR *onerror_stack=0;      jmp_buf *init_recovery(JMP_BUF *r)   {
17:    r->sp=sp;    r->mark_sp=mark_sp;    r->previous=recoveries; +  r->onerror=onerror_stack;    recoveries=r;    return & r->recovery;   }
46:    pop_n_elems(sp - recoveries->sp);    mark_sp = 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; +  } +     longjmp(recoveries->recovery,1);   }