pike.git / src / interpret.c

version» Context lines:

pike.git/src/interpret.c:1:   /*\   ||| This file a part of Pike, and is copyright by Fredrik Hubinette   ||| Pike is distributed as GPL (General Public License)   ||| See the files COPYING and DISCLAIMER for more information.   \*/   /**/   #include "global.h" - RCSID("$Id: interpret.c,v 1.200 2001/05/24 22:39:00 hubbe Exp $"); + RCSID("$Id: interpret.c,v 1.201 2001/06/08 12:23:01 mast Exp $");   #include "interpret.h"   #include "object.h"   #include "program.h"   #include "svalue.h"   #include "array.h"   #include "mapping.h"   #include "pike_error.h"   #include "language.h"   #include "stralloc.h"   #include "constants.h"
pike.git/src/interpret.c:1487:       debug_malloc_touch(Pike_fp);    if(SETJMP(tmp))    {    *Pike_sp=throw_value;    throw_value.type=T_INT;    Pike_sp++;    UNSETJMP(tmp);    Pike_fp->expendible=expendible;    Pike_fp->flags=flags; +  destruct_objects_to_destruct();    return 0;    }else{    struct svalue **save_mark_sp=Pike_mark_sp;    int x;    Pike_fp->expendible=Pike_fp->locals + Pike_fp->num_locals;       Pike_fp->flags&=~PIKE_FRAME_RETURN_INTERNAL;       x=eval_instruction(pc);   #ifdef PIKE_DEBUG
pike.git/src/interpret.c:1527:      PMOD_EXPORT void call_handle_error(void)   {    if (Pike_interpreter.svalue_stack_margin) {    ONERROR tmp;    int old_t_flag = t_flag;    t_flag = 0;    Pike_interpreter.svalue_stack_margin = 0;    Pike_interpreter.c_stack_margin = 0;    SET_ONERROR(tmp,exit_on_error,"Error in handle_error in master object!"); -  assign_svalue_no_free(Pike_sp++, & throw_value); +  *(Pike_sp++) = throw_value; +  throw_value.type=T_INT;    APPLY_MASTER("handle_error", 1);    pop_stack();    UNSET_ONERROR(tmp);    Pike_interpreter.svalue_stack_margin = SVALUE_STACK_MARGIN;    Pike_interpreter.c_stack_margin = C_STACK_MARGIN;    t_flag = old_t_flag;    } -  +  else { +  free_svalue(&throw_value); +  throw_value.type=T_INT;    } -  + }      PMOD_EXPORT int apply_low_safe_and_stupid(struct object *o, INT32 offset)   {    JMP_BUF tmp;    struct pike_frame *new_frame=alloc_pike_frame();    int ret;       new_frame->next = Pike_fp;    new_frame->current_object = o;    new_frame->context=o->prog->inherits[0];
pike.git/src/interpret.c:1592:      PMOD_EXPORT void safe_apply_low(struct object *o,int fun,int args)   {    JMP_BUF recovery;       Pike_sp-=args;    free_svalue(& throw_value);    throw_value.type=T_INT;    if(SETJMP(recovery))    { -  if(throw_value.type == T_ARRAY) +  if(throw_value.type != T_INT)    call_handle_error();    Pike_sp->u.integer = 0;    Pike_sp->subtype=NUMBER_NUMBER;    Pike_sp->type = T_INT;    Pike_sp++;    }else{    ptrdiff_t expected_stack = Pike_sp - Pike_interpreter.evaluator_stack + 1;    Pike_sp+=args;    apply_low(o,fun,args);    if(Pike_sp - Pike_interpreter.evaluator_stack > expected_stack)