svn commit: r278114 - head/cddl/contrib/opensolaris/lib/libdtrace/common

Mark Johnston markj at FreeBSD.org
Mon Feb 2 20:48:32 UTC 2015


Author: markj
Date: Mon Feb  2 20:48:31 2015
New Revision: 278114
URL: https://svnweb.freebsd.org/changeset/base/278114

Log:
  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

Modified:
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c

Modified: head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c
==============================================================================
--- head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c	Mon Feb  2 20:36:16 2015	(r278113)
+++ head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c	Mon Feb  2 20:48:31 2015	(r278114)
@@ -382,6 +382,9 @@ dt_stddev(uint64_t *data, uint64_t norma
 	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


More information about the svn-src-head mailing list