]> git.ipfire.org Git - thirdparty/collectd.git/commitdiff
fix distribution clone function
authorSvetlana <lana0771711@gmail.com>
Wed, 12 Aug 2020 11:57:34 +0000 (11:57 +0000)
committerSvetlana <lana0771711@gmail.com>
Wed, 12 Aug 2020 11:57:34 +0000 (11:57 +0000)
src/daemon/distribution.c

index bc469bde970db23b60bed7984764f9ad86fd9c7f..6f807faa3b1ef84a5c8209303448b2be98eaec3b 100644 (file)
  *   Svetlana Shmidt <sshmidt at google.com>
  **/
 
+#include "collectd.h"
 #include "distribution.h"
 
-#include <errno.h>
-#include <math.h>
-#include <stdio.h>
-#include <string.h>
-
 struct distribution_s {
   bucket_t *tree;
   size_t num_buckets;
@@ -167,16 +163,15 @@ distribution_t* distribution_clone(distribution_t *dist) {
   if (dist == NULL)
     return NULL;
   distribution_t *new_distribution = calloc(1, sizeof(*new_distribution));
-  if (dist->num_buckets == 0)
-    return new_distribution;
-
   bucket_t *nodes = calloc(tree_size(dist->num_buckets), sizeof(*nodes));
   if (new_distribution == NULL || nodes == NULL) {
     free(new_distribution);
     free(nodes);
     return NULL;
   }
+  memcpy(nodes, dist->tree, tree_size(dist->num_buckets) * sizeof(bucket_t));
   new_distribution->num_buckets = dist->num_buckets;
+  new_distribution->total_sum = dist->total_sum;
   new_distribution->tree = nodes;
   return new_distribution;
 }