From 2b1129bf5dc42fc2d23b171e37f67f8e8c86a65b Mon Sep 17 00:00:00 2001
From: Daniil Medvedev <medvdanil@gmail.com>
Date: Thu, 27 Aug 2015 16:31:09 +0300
Subject: [PATCH] push of uncommited bugfix in rmean from other branch

---
 src/rmean.cc | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/rmean.cc b/src/rmean.cc
index b16c20a78b..86470baeb3 100644
--- a/src/rmean.cc
+++ b/src/rmean.cc
@@ -38,6 +38,8 @@
 void
 rmean_collect(struct rmean *rmean, size_t name, int64_t value)
 {
+	assert(name < rmean->stats_n);
+
 	rmean->stats[name].value[0] += value;
 	rmean->stats[name].total += value;
 }
@@ -96,10 +98,10 @@ struct rmean *
 rmean_new(const char **name, size_t n)
 {
 	struct rmean *rmean = (struct rmean *) realloc(NULL,
-				sizeof(rmean) + sizeof(stats) * (n + 1));
+				sizeof(struct rmean) + sizeof(struct stats) * n);
 	if (rmean == NULL)
 		return NULL;
-	memset(rmean, 0, sizeof(rmean) + sizeof(stats) * n);
+	memset(rmean, 0, sizeof(struct rmean) + sizeof(struct stats) * n);
 	rmean->stats_n = n;
 	rmean->timer.data = (void *)rmean;
 	ev_timer_init(&rmean->timer, rmean_age, 0, 1.);
@@ -116,10 +118,10 @@ rmean_new(const char **name, size_t n)
 void
 rmean_delete(struct rmean *rmean)
 {
-	if (rmean) {
-		ev_timer_stop(loop(), &rmean->timer);
-		free(rmean);
-	}
+
+	ev_timer_stop(loop(), &rmean->timer);
+	free(rmean);
+	rmean = 0;
 }
 
 void
-- 
GitLab