]> git.ipfire.org Git - thirdparty/collectd.git/commitdiff
fix bug in update_metric function
authorSvetlana Shmidt <sshmidt@google.com>
Tue, 8 Sep 2020 12:38:34 +0000 (12:38 +0000)
committerSvetlana Shmidt <sshmidt@google.com>
Tue, 8 Sep 2020 12:38:34 +0000 (12:38 +0000)
src/daemon/utils_cache.c

index 30bad79ae9b20403789b77dc35ca0895c1eea7ae..ad9d3df466b20332361001d1602f450bf3882448 100644 (file)
@@ -360,9 +360,9 @@ static int uc_update_metric(metric_t const *m) {
 
   case METRIC_TYPE_DISTRIBUTION: {
     distribution_destroy(ce->distribution_increase);
-    ce->distribution_increase = ce->values_raw.distribution;
+    ce->distribution_increase = distribution_clone(m->value.distribution);
     status =
-        distribution_sub(ce->distribution_increase, m->value.distribution);
+        distribution_sub(ce->distribution_increase, ce->values_raw.distribution);
     if (status == ERANGE) {
       distribution_destroy(ce->distribution_increase);
       ce->distribution_increase = distribution_clone(m->value.distribution);
@@ -377,6 +377,7 @@ static int uc_update_metric(metric_t const *m) {
       ERROR("uc_update: distribution_sub failed with status %d.", status);
       return status;
     }
+    distribution_destroy(ce->values_raw.distribution);
     ce->values_raw.distribution = distribution_clone(m->value.distribution);
     break;
   }