Branch: Tag:

2009-08-26

2009-08-26 12:25:56 by Martin Stjernholm <mast@lysator.liu.se>

Never put stuff on the freed part of the stack.

Rev: src/builtin_functions.c:1.484

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: builtin_functions.c,v 1.483 2008/04/23 11:16:55 grubba Exp $ + || $Id: builtin_functions.c,v 1.484 2009/08/26 12:25:56 mast Exp $   */      #include "global.h" - RCSID("$Id: builtin_functions.c,v 1.483 2008/04/23 11:16:55 grubba Exp $"); + RCSID("$Id: builtin_functions.c,v 1.484 2009/08/26 12:25:56 mast Exp $");   #include "interpret.h"   #include "svalue.h"   #include "pike_macros.h"
252:    SIMPLE_TOO_FEW_ARGS_ERROR("copy_value",1);       pop_n_elems(args-1); -  copy_svalues_recursively_no_free(Pike_sp,Pike_sp-1,1,0); -  free_svalue(Pike_sp-1); -  Pike_sp[-1]=Pike_sp[0]; +  Pike_sp++; +  copy_svalues_recursively_no_free(Pike_sp-1,Pike_sp-2,1,0); +  free_svalue(Pike_sp-2); +  move_svalue (Pike_sp - 2, Pike_sp - 1); +  Pike_sp--;    dmalloc_touch_svalue(Pike_sp-1);   }