Branch: Tag:

1999-10-29

1999-10-29 03:35:31 by Martin Stjernholm <mast@lysator.liu.se>

Check PROGRAM_NO_EXPLICIT_DESTRUCT in f_destruct(), handle weak flag
on multisets in f_set_weak_flag().

Rev: src/builtin_functions.c:1.197

5:   \*/   /**/   #include "global.h" - RCSID("$Id: builtin_functions.c,v 1.196 1999/10/27 17:16:56 mast Exp $"); + RCSID("$Id: builtin_functions.c,v 1.197 1999/10/29 03:35:31 mast Exp $");   #include "interpret.h"   #include "svalue.h"   #include "pike_macros.h"
1379:       o=fp->current_object;    } +  if (o->prog->flags & PROGRAM_NO_EXPLICIT_DESTRUCT) +  PIKE_ERROR("destruct", "Object can't be destructed explicitly.\n", sp, args);   #ifdef PIKE_SECURITY    if(!CHECK_DATA_SECURITY(o, SECURITY_BIT_DESTRUCT))    error("Destruct permission denied.\n");
1916:    case T_MAPPING:    SETFLAG(s->u.mapping->flags,MAPPING_FLAG_WEAK,ret);    break; +  case T_MULTISET: +  SETFLAG(s->u.multiset->ind->flags,(ARRAY_WEAK_FLAG|ARRAY_WEAK_SHRINK),ret); +  break;    default: -  SIMPLE_BAD_ARG_ERROR("set_weak_flag",1,"array|mapping"); +  SIMPLE_BAD_ARG_ERROR("set_weak_flag",1,"array|mapping|multiset");    }    pop_n_elems(args-1);   }
5076:   /* function(array(1=mixed),array(2=mixed):mapping(1:2)) */    ADD_EFUN("mkmapping",f_mkmapping,tFunc(tArr(tSetvar(1,tMix)) tArr(tSetvar(2,tMix)),tMap(tVar(1),tVar(2))),OPT_TRY_OPTIMIZE);    - /* function(mapping,int:int) */ + /* function(1=mixed,int:1) */    ADD_EFUN("set_weak_flag",f_set_weak_flag,tFunc(tSetvar(1,tMix) tInt,tVar(1)),OPT_SIDE_EFFECT);      /* function(void|object:object) */