]> git.ipfire.org Git - thirdparty/rrdtool-1.x.git/commitdiff
Make rrd_free idempotent by resetting free'd pointers to NULL
authorPeter Stamfest <peter@stamfest.at>
Sat, 15 Mar 2014 20:21:00 +0000 (21:21 +0100)
committerPeter Stamfest <peter@stamfest.at>
Sat, 15 Mar 2014 20:36:54 +0000 (21:36 +0100)
src/rrd_open.c

index f9aeea2d5af245cbf8d9a9c9fbd562d7ac090698..d60a57a7df85e25fd36a39d70030e423f32f28d6 100644 (file)
@@ -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