From: Svetlana Date: Wed, 12 Aug 2020 11:57:34 +0000 (+0000) Subject: fix distribution clone function X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=834ef7ac17a7f563d57ba947c6b7f851a426024d;p=thirdparty%2Fcollectd.git fix distribution clone function --- diff --git a/src/daemon/distribution.c b/src/daemon/distribution.c index bc469bde9..6f807faa3 100644 --- a/src/daemon/distribution.c +++ b/src/daemon/distribution.c @@ -24,13 +24,9 @@ * Svetlana Shmidt **/ +#include "collectd.h" #include "distribution.h" -#include -#include -#include -#include - 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; }