diff --git a/src/light.c b/src/light.c index aea499de1..555995eec 100644 --- a/src/light.c +++ b/src/light.c @@ -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; diff --git a/src/timeout.c b/src/timeout.c index e5ae39531..fc853e795 100644 --- a/src/timeout.c +++ b/src/timeout.c @@ -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 {