Zero out freed timers and light sources

This commit is contained in:
Pasi Kallinen
2024-05-06 19:17:07 +03:00
parent 1a58ed8de9
commit dba37fa768
2 changed files with 7 additions and 0 deletions

View File

@@ -2162,6 +2162,7 @@ run_timers(void)
if (curr->kind == TIMER_OBJECT)
(curr->arg.a_obj)->timed--;
(*timeout_funcs[curr->func_index].f)(&curr->arg, curr->timeout);
(void) memset((genericptr_t) curr, 0, sizeof(timer_element));
free((genericptr_t) curr);
}
}
@@ -2236,6 +2237,7 @@ stop_timer(short func_index, anything *arg)
(arg->a_obj)->timed--;
if ((cleanup_func = timeout_funcs[doomed->func_index].cleanup) != 0)
(*cleanup_func)(arg, timeout);
(void) memset((genericptr_t) doomed, 0, sizeof(timer_element));
free((genericptr_t) doomed);
return (timeout - gm.moves);
}
@@ -2313,6 +2315,7 @@ obj_stop_timers(struct obj *obj)
gt.timer_base = curr->next;
if ((cleanup_func = timeout_funcs[curr->func_index].cleanup) != 0)
(*cleanup_func)(&curr->arg, curr->timeout);
(void) memset((genericptr_t) curr, 0, sizeof(timer_element));
free((genericptr_t) curr);
} else {
prev = curr;
@@ -2353,6 +2356,7 @@ spot_stop_timers(coordxy x, coordxy y, short func_index)
gt.timer_base = curr->next;
if ((cleanup_func = timeout_funcs[curr->func_index].cleanup) != 0)
(*cleanup_func)(&curr->arg, curr->timeout);
(void) memset((genericptr_t) curr, 0, sizeof(timer_element));
free((genericptr_t) curr);
} else {
prev = curr;
@@ -2618,6 +2622,7 @@ save_timers(NHFILE *nhfp, int range)
prev->next = curr->next;
else
gt.timer_base = curr->next;
(void) memset((genericptr_t) curr, 0, sizeof(timer_element));
free((genericptr_t) curr);
/* prev stays the same */
} else {