X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrdtool.c;fp=src%2Frrdtool.c;h=79331bf73dce12a6660c29f032af29f283463b79;hb=20a7434400053998709109592ef17aa8c87a35ab;hp=fbd836020f95f14dad6bf1dfd2d69ab1146b9c66;hpb=e686e07b9c1ffcb3a9be3483a39b069ac5795867;p=collectd.git diff --git a/src/rrdtool.c b/src/rrdtool.c index fbd83602..79331bf7 100644 --- a/src/rrdtool.c +++ b/src/rrdtool.c @@ -735,9 +735,9 @@ static void rrd_cache_flush (int timeout) } else /* ancient and no values -> waste of memory */ { - keys = (char **) realloc ((void *) keys, + char **tmp = (char **) realloc ((void *) keys, (keys_num + 1) * sizeof (char *)); - if (keys == NULL) + if (tmp == NULL) { char errbuf[1024]; ERROR ("rrdtool plugin: " @@ -745,8 +745,10 @@ static void rrd_cache_flush (int timeout) sstrerror (errno, errbuf, sizeof (errbuf))); c_avl_iterator_destroy (iter); + sfree (keys); return; } + keys = tmp; keys[keys_num] = key; keys_num++; } @@ -769,7 +771,7 @@ static void rrd_cache_flush (int timeout) keys[i] = NULL; } /* for (i = 0..keys_num) */ - free (keys); + sfree (keys); cache_flush_last = now; } /* void rrd_cache_flush */