Avoid function call when clearing 'anything' union.
E NEARDATA struct obj *migrating_objs;
E NEARDATA struct obj *billobjs;
E NEARDATA struct obj zeroobj; /* init'd and defined in decl.c */
+E NEARDATA anything zeroany; /* init'd and defined in decl.c */
#include "you.h"
E NEARDATA struct you u;
/* used to zero all elements of a struct obj */
NEARDATA struct obj zeroobj = DUMMY;
+/* used to zero out union any*/
+NEARDATA anything zeroany = DUMMY;
/* originally from dog.c */
NEARDATA char dogname[PL_PSIZ] = DUMMY;
uint_to_any(ui)
unsigned ui;
{
- zero_anything(&tmp_anything);
+ tmp_anything = zeroany;
tmp_anything.a_uint = ui;
return &tmp_anything;
}
long_to_any(lng)
unsigned lng;
{
- zero_anything(&tmp_anything);
+ tmp_anything = zeroany;
tmp_anything.a_long = lng;
return &tmp_anything;
}
monst_to_any(mtmp)
struct monst *mtmp;
{
- zero_anything(&tmp_anything);
+ tmp_anything = zeroany;
tmp_anything.a_monst = mtmp;
return &tmp_anything;
}
obj_to_any(obj)
struct obj *obj;
{
- zero_anything(&tmp_anything);
+ tmp_anything = zeroany;
tmp_anything.a_obj = obj;
return &tmp_anything;
}
light_source *curr, *prev;
anything tmp_id;
- zero_anything(&tmp_id);
-
+ tmp_id = zeroany;
/* need to be prepared for dealing a with light source which
has only been partially restored during a level change
(in particular: chameleon vs prot. from shape changers) */
arg_save = ls->id;
if (ls->type == LS_OBJECT) {
otmp = ls->id.a_obj;
- zero_anything(&ls->id);
+ ls->id = zeroany;
ls->id.a_uint = otmp->o_id;
#ifdef DEBUG
if (find_oid((unsigned)ls->id) != otmp)
#endif
} else { /* ls->type == LS_MONSTER */
mtmp = (struct monst *)ls->id.a_monst;
- zero_anything(&ls->id);
+ ls->id = zeroany;
ls->id.a_uint = mtmp->m_id;
#ifdef DEBUG
if (find_mid((unsigned)ls->id, FM_EVERYWHERE) != mtmp)
reg->n_monst = 0;
reg->max_monst = 0;
reg->monsters = (unsigned int *)0;
- zero_anything(®->arg);
+ reg->arg = zeroany;
return reg;
}
/* If it was a thick cloud, it dissipates a little first */
if (damage >= 5) {
damage /= 2; /* It dissipates, let's do less damage */
- zero_anything(®->arg);
+ reg->arg = zeroany;
reg->arg.a_int = damage;
reg->ttl = 2L; /* Here's the trick : reset ttl */
return FALSE; /* THEN return FALSE, means "still there" */
set_heros_fault(cloud); /* assume player has created it */
cloud->inside_f = INSIDE_GAS_CLOUD;
cloud->expire_f = EXPIRE_GAS_CLOUD;
- zero_anything(&cloud->arg);
+ cloud->arg = zeroany;
cloud->arg.a_int = damage;
cloud->visible = TRUE;
cloud->glyph = cmap_to_glyph(S_cloud);
{
anything arg_save;
- zero_anything(&arg_save);
-
+ arg_save = zeroany;
switch (timer->kind) {
case TIMER_GLOBAL:
case TIMER_LEVEL:
else {
/* replace object pointer with id */
arg_save.a_obj = timer->arg.a_obj;
- zero_anything(&timer->arg);
+ timer->arg = zeroany;
timer->arg.a_uint = (arg_save.a_obj)->o_id;
timer->needs_fixup = 1;
bwrite(fd, (genericptr_t)timer, sizeof(timer_element));
else {
/* replace monster pointer with id */
arg_save.a_monst = timer->arg.a_monst;
- zero_anything(&timer->arg);
+ timer->arg = zeroany;
timer->arg.a_uint = (arg_save.a_monst)->m_id;
timer->needs_fixup = 1;
bwrite(fd, (genericptr_t)timer, sizeof(timer_element));