From a299ec63c91260b68237da3a6c19e8ed8523fd6d Mon Sep 17 00:00:00 2001 From: TEC Date: Sat, 5 Sep 2020 21:05:36 +0800 Subject: [PATCH 11/15] org-plot.el: avoid arithmetic overflow error * lisp/org-plot.el (org--plot/values-stats): A set of numbers with the same value (i.e. 0 range) should not produce an arithmetic overflow error. This error was caused by taking the log of 0 (when the range is 0). This is mitigated by explicit checking against this case. --- lisp/org-plot.el | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lisp/org-plot.el b/lisp/org-plot.el index 53186bb75..0a9694263 100644 --- a/lisp/org-plot.el +++ b/lisp/org-plot.el @@ -192,10 +192,13 @@ values, namely regarding the range." (let* ((minimum (or hard-min (apply #'min nums))) (maximum (or hard-max (apply #'max nums))) (range (- maximum minimum)) - (rangeOrder (ceiling (- 1 (log10 range)))) + (rangeOrder (if (= range 0) 0 + (ceiling (- 1 (log10 range))))) (range-factor (expt 10 rangeOrder)) - (nice-min (/ (float (floor (* minimum range-factor))) range-factor)) - (nice-max (/ (float (ceiling (* maximum range-factor))) range-factor))) + (nice-min (if (= range 0) (car nums) + (/ (float (floor (* minimum range-factor))) range-factor))) + (nice-max (if (= range 0) (car nums) + (/ (float (ceiling (* maximum range-factor))) range-factor)))) `(:min ,minimum :max ,maximum :range ,range :range-factor ,range-factor :nice-min ,nice-min :nice-max ,nice-max :nice-range ,(- nice-max nice-min)))) -- 2.28.0