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
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to