write_prometheus plugin: Fix incorrect use of realloc().
authorFlorian Forster <octo@collectd.org>
Fri, 12 May 2017 11:05:37 +0000 (13:05 +0200)
committerFlorian Forster <octo@collectd.org>
Fri, 12 May 2017 11:06:30 +0000 (13:06 +0200)
Calling realloc(ptr, 0) is undefined. Call free() explicitly.

src/write_prometheus.c

index 6b77712..de1c389 100644 (file)
@@ -546,9 +546,14 @@ metric_family_delete_metric(Io__Prometheus__Client__MetricFamily *fam,
             ((fam->n_metric - 1) - i) * sizeof(fam->metric[i]));
   fam->n_metric--;
 
+  if (fam->n_metric == 0) {
+    sfree(fam->metric);
+    return 0;
+  }
+
   Io__Prometheus__Client__Metric **tmp =
       realloc(fam->metric, fam->n_metric * sizeof(*fam->metric));
-  if ((tmp != NULL) || (fam->n_metric == 0))
+  if (tmp != NULL)
     fam->metric = tmp;
 
   return 0;