[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index][Thread Index][Top&Search][Original]

<patch> avoid division by 0 in Benchmark.pm



tested against perl5.005_63

On too short tests Benchmark makes a division by 0.
Strangely the numerator was tested in place of the denominator:

timethis 1: Illegal division by zero at lib/Benchmark.pm line 438, <IN> line 7.
	Benchmark::timestr(undef, 'Benchmark=ARRAY(0x82cb164)', '', '5.2f') called at lib/Benchmark.pm line 616
	Benchmark::timethis(undef, 1, '{}') called at (eval 13) line 2
	eval '($@, $!, $^E, $,, $/, $\\, $^W) = @saved;package main; $^D = $^D | $DB::db_stop;


After the fix:

timethis 1, "{}"
timethis 1:  0 wallclock secs ( 0.00 usr +  0.00 sys =  0.00 CPU)
            (warning: too few iterations for a reliable count)



diff -u lib/Benchmark.pm.orig lib/Benchmark.pm
--- lib/Benchmark.pm.orig	Wed Dec  8 19:25:49 1999
+++ lib/Benchmark.pm	Mon Jan 24 15:54:47 2000
@@ -435,7 +435,7 @@
 			    $r,$pu,$ps,$pt) if $style eq 'noc';
     $s=sprintf("%2d wallclock secs (%$f cusr + %$f csys = %$f CPU)",
 			    $r,$cu,$cs,$ct) if $style eq 'nop';
-    $s .= sprintf(" @ %$f/s (n=$n)", $n / ( $pu + $ps )) if $n;
+    $s .= sprintf(" @ %$f/s (n=$n)", $n / ( $pu + $ps )) if $pu + $ps;
     $s;
 }
 
I had no time to read p5p recently, sorry for the inconvenience if
this has already been fixed.

-- 
  Stéphane Payrard
   email   : properler@freesurf.fr

  


Follow-Ups from:
Jarkko Hietaniemi <jhi@iki.fi>

[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index][Thread Index][Top&Search][Original]