Branch: Tag:

2003-08-08

2003-08-08 11:02:15 by Martin Stjernholm <mast@lysator.liu.se>

Working fix.

Rev: src/interpret.c:1.324

2:   || This file is part of Pike. For copyright information see COPYRIGHT.   || Pike is distributed under GPL, LGPL and MPL. See the file COPYING   || for more information. - || $Id: interpret.c,v 1.323 2003/08/08 10:28:48 grubba Exp $ + || $Id: interpret.c,v 1.324 2003/08/08 11:02:15 mast Exp $   */      #include "global.h" - RCSID("$Id: interpret.c,v 1.323 2003/08/08 10:28:48 grubba Exp $"); + RCSID("$Id: interpret.c,v 1.324 2003/08/08 11:02:15 mast Exp $");   #include "interpret.h"   #include "object.h"   #include "program.h"
1673:   #endif       - #define basic_low_return() do { \ -  struct svalue *save_sp=Pike_fp->save_sp; \ -  DO_IF_DEBUG( \ + #define basic_low_return(save_sp) \ +  DO_IF_DEBUG( \    if(Pike_mark_sp < Pike_fp->save_mark_sp) \    Pike_fatal("Popped below save_mark_sp!\n"); \    if(Pike_sp<Pike_interpreter.evaluator_stack) \
1684:    \    Pike_mark_sp=Pike_fp->save_mark_sp; \    \ -  POP_PIKE_FRAME(); \ -  } while(0) +  POP_PIKE_FRAME()         void low_return(void)   { -  +  struct svalue *save_sp = Pike_fp->save_sp;   #if defined (PIKE_USE_MACHINE_CODE) && defined (OPCODE_RETURN_JUMPADDR)    /* If the function that returns is the only ref to the current    * object and its program then the program would be freed in
1702:    add_ref (o);   #endif    -  basic_low_return(); +  basic_low_return (save_sp);    if(save_sp+1 > Pike_sp)    {    push_int(0);
1725:      void low_return_pop(void)   { +  struct svalue *save_sp = Pike_fp->save_sp;   #if defined (PIKE_USE_MACHINE_CODE) && defined (OPCODE_RETURN_JUMPADDR)    /* See note above. */    struct object *o = Pike_fp->current_object;    add_ref (o);   #endif    -  basic_low_return(); +  basic_low_return (save_sp);       if(save_sp < Pike_sp)    {