X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Ftally%2Ftally.c;h=d67112c2cf6da49017904be9ec91b49f1f11ced5;hb=237fc67d26def3f4458594b4aff7cb617f4522f7;hp=2af7353380f9af18221971aba90d1f7648ab8b2b;hpb=a81be540c665d2e751ed06510a47b934fa075140;p=ccan diff --git a/ccan/tally/tally.c b/ccan/tally/tally.c index 2af73533..d67112c2 100644 --- a/ccan/tally/tally.c +++ b/ccan/tally/tally.c @@ -25,22 +25,27 @@ struct tally *tally_new(unsigned buckets) struct tally *tally; /* There is always 1 bucket. */ - if (buckets == 0) + if (buckets == 0) { buckets = 1; + } /* Overly cautious check for overflow. */ - if (sizeof(*tally) * buckets / sizeof(*tally) != buckets) + if (sizeof(*tally) * buckets / sizeof(*tally) != buckets) { return NULL; + } + tally = (struct tally *)malloc( sizeof(*tally) + sizeof(tally->counts[0])*(buckets-1)); - if (tally) { - tally->max = ((size_t)1 << (SIZET_BITS - 1)); - tally->min = ~tally->max; - tally->total[0] = tally->total[1] = 0; - tally->buckets = buckets; - tally->step_bits = 0; - memset(tally->counts, 0, sizeof(tally->counts[0])*buckets); + if (tally == NULL) { + return NULL; } + + tally->max = ((size_t)1 << (SIZET_BITS - 1)); + tally->min = ~tally->max; + tally->total[0] = tally->total[1] = 0; + tally->buckets = buckets; + tally->step_bits = 0; + memset(tally->counts, 0, sizeof(tally->counts[0])*buckets); return tally; }