[gnus git] branch master updated: m0-13-34-g2eb3613 =1= Don't overflow if computing approximate percentage

Katsumi Yamaoka <[email protected]> Sun, 02 Aug 2015 00:44:17 +0200
Newsgroups gmane.emacs.gnus.cvs
Message-ID <[email protected]>
       via  2eb3613948759b7b264ebd7f7d81b3b592bc381d (commit)
      from  d33ef478be22b74e27696dc88409a6ec6b7c46c3 (commit)


- Log -----------------------------------------------------------------
commit 2eb3613948759b7b264ebd7f7d81b3b592bc381d
Author: Paul Eggert <[email protected]>
Date:   Sat Aug 1 22:43:52 2015 +0000

    Don't overflow if computing approximate percentage
    
    * nnbabyl.el (nnbabyl-retrieve-headers):
    * nndiary.el (nndiary-retrieve-headers):
    * nneething.el (nneething-retrieve-headers):
    * nnmbox.el (nnmbox-retrieve-headers):
    * nnmh.el (nnmh-retrieve-headers):
    * nnml.el (nnml-retrieve-headers):
    * nnspool.el (nnspool-retrieve-headers):
    * nntp.el (nntp-retrieve-headers, nntp-retrieve-articles):
    Prefer (floor (* 100.0 NUMERATOR) DENOMINATOR) when calculating
    progress-report percentages and the like.  This avoids problems
    if (* 100 NUMERATOR) would overflow.
    
    * gnus-registry.el (gnus-registry-import-eld):
    * registry.el (registry-reindex):
    Use (* 100.0 ...) rather than (* 100 ...) to avoid int overflow issues.

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 46b5310..73fba70 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,21 @@
+2015-07-31  Paul Eggert  <[email protected]>
+
+	* nnbabyl.el (nnbabyl-retrieve-headers):
+	* nndiary.el (nndiary-retrieve-headers):
+	* nneething.el (nneething-retrieve-headers):
+	* nnmbox.el (nnmbox-retrieve-headers):
+	* nnmh.el (nnmh-retrieve-headers):
+	* nnml.el (nnml-retrieve-headers):
+	* nnspool.el (nnspool-retrieve-headers):
+	* nntp.el (nntp-retrieve-headers, nntp-retrieve-articles):
+	Prefer (floor (* 100.0 NUMERATOR) DENOMINATOR) when calculating
+	progress-report percentages and the like.  This avoids problems
+	if (* 100 NUMERATOR) would overflow.
+
+	* gnus-registry.el (gnus-registry-import-eld):
+	* registry.el (registry-reindex):
+	Use (* 100.0 ...) rather than (* 100 ...) to avoid int overflow issues.
+
 2015-07-17  Julien Danjou  <jd@abydos>
 
 	* sieve-mode.el (sieve-font-lock-keywords): Add missing "body" test
diff --git a/lisp/gnus-registry.el b/lisp/gnus-registry.el
index 0cb5960..5044397 100644
--- a/lisp/gnus-registry.el
+++ b/lisp/gnus-registry.el
@@ -1100,7 +1100,7 @@ only the last one's marks are returned."
         (when (and (< 0 expected)
                    (= 0 (mod count 100)))
           (message "importing: %d of %d (%.2f%%)"
-                   count expected (/ (* 100 count) expected)))
+                   count expected (/ (* 100.0 count) expected)))
         (setq entry (car-safe old)
               old (cdr-safe old))
         (let* ((id (car-safe entry))
diff --git a/lisp/nnbabyl.el b/lisp/nnbabyl.el
index d060c2a..ae417a0 100644
--- a/lisp/nnbabyl.el
+++ b/lisp/nnbabyl.el
@@ -105,7 +105,7 @@
 	     (> number nnmail-large-newsgroup)
 	     (zerop (% (incf count) 20))
 	     (nnheader-message 5 "nnbabyl: Receiving headers... %d%%"
-			       (/ (* count 100) number))))
+			       (floor (* count 100.0) number))))
 
       (and (numberp nnmail-large-newsgroup)
 	   (> number nnmail-large-newsgroup)
diff --git a/lisp/nndiary.el b/lisp/nndiary.el
index 027d888..3134438 100644
--- a/lisp/nndiary.el
+++ b/lisp/nndiary.el
@@ -423,7 +423,7 @@ all.  This may very well take some time.")
 		   (> number nnmail-large-newsgroup)
 		   (zerop (% count 20))
 		   (nnheader-message 6 "nndiary: Receiving headers... %d%%"
-				     (/ (* count 100) number))))
+				     (floor (* count 100.0) number))))
 
 	    (and (numberp nnmail-large-newsgroup)
 		 (> number nnmail-large-newsgroup)
diff --git a/lisp/nneething.el b/lisp/nneething.el
index 183e396..0d9044f 100644
--- a/lisp/nneething.el
+++ b/lisp/nneething.el
@@ -106,7 +106,7 @@ included.")
 	  (and large
 	       (zerop (% count 20))
 	       (nnheader-message 5 "nneething: Receiving headers... %d%%"
-				 (/ (* count 100) number))))
+				 (floor (* count 100.0) number))))
 
 	(when large
 	  (nnheader-message 5 "nneething: Receiving headers...done"))
diff --git a/lisp/nnmbox.el b/lisp/nnmbox.el
index 78983a5..a70a039 100644
--- a/lisp/nnmbox.el
+++ b/lisp/nnmbox.el
@@ -106,7 +106,7 @@
 	     (> number nnmail-large-newsgroup)
 	     (zerop (% count 20))
 	     (nnheader-message 5 "nnmbox: Receiving headers... %d%%"
-			       (/ (* count 100) number))))
+			       (floor (* count 100.0) number))))
 
       (and (numberp nnmail-large-newsgroup)
 	   (> number nnmail-large-newsgroup)
diff --git a/lisp/nnmh.el b/lisp/nnmh.el
index 04270a5..cdbf38a 100644
--- a/lisp/nnmh.el
+++ b/lisp/nnmh.el
@@ -109,7 +109,7 @@ as unread by Gnus.")
 	  (and large
 	       (zerop (% count 20))
 	       (nnheader-message 5 "nnmh: Receiving headers... %d%%"
-				 (/ (* count 100) number))))
+				 (floor (* count 100.0) number))))
 
 	(when large
 	  (nnheader-message 5 "nnmh: Receiving headers...done"))
diff --git a/lisp/nnml.el b/lisp/nnml.el
index 8275e19..c825e09 100644
--- a/lisp/nnml.el
+++ b/lisp/nnml.el
@@ -178,7 +178,7 @@ non-nil.")
 		   (> number nnmail-large-newsgroup)
 		   (zerop (% count 20))
 		   (nnheader-message 6 "nnml: Receiving headers... %d%%"
-				     (/ (* count 100) number))))
+				     (floor (* count 100.0) number))))
 
 	    (and (numberp nnmail-large-newsgroup)
 		 (> number nnmail-large-newsgroup)
diff --git a/lisp/nnspool.el b/lisp/nnspool.el
index 9e9537a..f10b1ad 100644
--- a/lisp/nnspool.el
+++ b/lisp/nnspool.el
@@ -174,7 +174,7 @@ there.")
 	    (and do-message
 		 (zerop (% (incf count) 20))
 		 (nnheader-message 5 "nnspool: Receiving headers... %d%%"
-				   (/ (* count 100) number))))
+				   (floor (* count 100.0) number))))
 
 	  (when do-message
 	    (nnheader-message 5 "nnspool: Receiving headers...done"))
diff --git a/lisp/nntp.el b/lisp/nntp.el
index 0891dba..b617a1b 100644
--- a/lisp/nntp.el
+++ b/lisp/nntp.el
@@ -728,7 +728,7 @@ command whose response triggered the error."
                     (> number nntp-large-newsgroup)
                     (zerop (% received 20))
                     (nnheader-message 6 "NNTP: Receiving headers... %d%%"
-                                      (/ (* received 100) number)))
+                                      (floor (* received 100.0) number)))
                (nntp-accept-response))))
          (and (numberp nntp-large-newsgroup)
               (> number nntp-large-newsgroup)
@@ -965,7 +965,7 @@ command whose response triggered the error."
                   (> number nntp-large-newsgroup)
                   (zerop (% received 20))
                   (nnheader-message 6 "NNTP: Receiving articles... %d%%"
-                                    (/ (* received 100) number)))
+                                    (floor (* received 100.0) number)))
              (nntp-accept-response))))
        (and (numberp nntp-large-newsgroup)
             (> number nntp-large-newsgroup)
diff --git a/lisp/registry.el b/lisp/registry.el
index 44c3358..13c1671 100644
--- a/lisp/registry.el
+++ b/lisp/registry.el
@@ -340,7 +340,7 @@ Errors out if the key exists already."
 	   (when (and (< 0 expected)
 		      (= 0 (mod count 1000)))
 	     (message "reindexing: %d of %d (%.2f%%)"
-		      count expected (/ (* 100 count) expected)))
+		      count expected (/ (* 100.0 count) expected)))
 	   (dolist (val (cdr-safe (assq tr v)))
 	     (let* ((value-keys (registry-lookup-secondary-value db tr val)))
 	       (push key value-keys)

-----------------------------------------------------------------------
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we listed those
revisions in full, above.

Summary of changes:
 lisp/ChangeLog        |   18 ++++++++++++++++++
 lisp/gnus-registry.el |    2 +-
 lisp/nnbabyl.el       |    2 +-
 lisp/nndiary.el       |    2 +-
 lisp/nneething.el     |    2 +-
 lisp/nnmbox.el        |    2 +-
 lisp/nnmh.el          |    2 +-
 lisp/nnml.el          |    2 +-
 lisp/nnspool.el       |    2 +-
 lisp/nntp.el          |    4 ++--
 lisp/registry.el      |    2 +-
 11 files changed, 29 insertions(+), 11 deletions(-)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Gnus Project".

The branch, master has been updated


hooks/post-receive
-- 
Gnus Project