From 6ac0e4858ac60dfade25336c0164d11c5a49d7e1 Mon Sep 17 00:00:00 2001 From: Mark Johnston Date: Mon, 2 Feb 2015 20:48:31 +0000 Subject: [PATCH] Let the standard deviation of the empty set be 0. This is consistent with the behaviour for averages, and fixes a crash that can occur when attempting to print a stddev aggregation containing no elements: dtrace:::BEGIN { @ = stddev(0); clear(@); printa("%@d", @); } PR: 197260 MFC after: 2 week --- cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c index 7eae3986e93a..da804eef87b5 100644 --- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c +++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c @@ -382,6 +382,9 @@ dt_stddev(uint64_t *data, uint64_t normal) int64_t norm_avg; uint64_t diff[2]; + if (data[0] == 0) + return (0); + /* * The standard approximation for standard deviation is * sqrt(average(x**2) - average(x)**2), i.e. the square root