// copy(), Written by Kniggit@VikingMUD / 930908
// This is used to create a duplicate mapping or array that doesn't hold
// any insecure pointers to other ones.
// original copy() simul_efun by Buddha@tmi-2
// This version installed 9-19-93 by Mobydick.
// Removed SECURE_FUNC support as suggested by Beek, Leto 020695
mixed
copy(mixed var) {
if (mapp(var)) {
mapping res;
mixed *index;
int i;
res = var + ([]);
i = sizeof(index = keys(var));
while(i-- > 0)
if(pointerp(res[index[i]]) || mapp(res[index[i]]))
res[index[i]] = copy(var[index[i]]);
return res;
}
else if (pointerp(var))
return map_array(var, "copy", this_object());
return var;
}