Zero out freed timers and light sources
This commit is contained in:
@@ -148,6 +148,7 @@ delete_ls(light_source *ls)
|
||||
}
|
||||
if (curr) {
|
||||
assert(curr == ls);
|
||||
(void) memset((genericptr_t) ls, 0, sizeof(light_source));
|
||||
free((genericptr_t) ls);
|
||||
gv.vision_full_recalc = 1;
|
||||
} else {
|
||||
@@ -433,6 +434,7 @@ save_light_sources(NHFILE *nhfp, int range)
|
||||
/* if global and not doing local, or vice versa, remove it */
|
||||
if (is_global ^ (range == RANGE_LEVEL)) {
|
||||
*prev = curr->next;
|
||||
(void) memset((genericptr_t) curr, 0, sizeof(light_source));
|
||||
free((genericptr_t) curr);
|
||||
} else {
|
||||
prev = &(*prev)->next;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user