From: Peter Stamfest Date: Sat, 15 Mar 2014 20:21:00 +0000 (+0100) Subject: Make rrd_free idempotent by resetting free'd pointers to NULL X-Git-Tag: v1.5.0-rc1~117^2~2^2~17 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2eadd812db68447614628d996864c66816182054;p=thirdparty%2Frrdtool-1.x.git Make rrd_free idempotent by resetting free'd pointers to NULL --- diff --git a/src/rrd_open.c b/src/rrd_open.c index f9aeea2d..d60a57a7 100644 --- a/src/rrd_open.c +++ b/src/rrd_open.c @@ -782,13 +782,21 @@ void rrd_free( if (rrd == NULL) return; free_rrd_ptr_if_not_mmapped(rrd->live_head, rrd); + rrd->live_head = NULL; free_rrd_ptr_if_not_mmapped(rrd->stat_head, rrd); + rrd->stat_head = NULL; free_rrd_ptr_if_not_mmapped(rrd->ds_def, rrd); + rrd->ds_def = NULL; free_rrd_ptr_if_not_mmapped(rrd->rra_def, rrd); + rrd->rra_def = NULL; free_rrd_ptr_if_not_mmapped(rrd->rra_ptr, rrd); + rrd->rra_ptr = NULL; free_rrd_ptr_if_not_mmapped(rrd->pdp_prep, rrd); + rrd->pdp_prep = NULL; free_rrd_ptr_if_not_mmapped(rrd->cdp_prep, rrd); + rrd->cdp_prep = NULL; free_rrd_ptr_if_not_mmapped(rrd->rrd_value, rrd); + rrd->rrd_value = NULL; } /* routine used by external libraries to free memory allocated by