emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master e8ba94b 1/2: Simplify overflow check via INT_SUBTRA


From: Paul Eggert
Subject: [Emacs-diffs] master e8ba94b 1/2: Simplify overflow check via INT_SUBTRACT_WRAPV
Date: Wed, 8 Jun 2016 07:36:23 +0000 (UTC)

branch: master
commit e8ba94bf83515a64523532cc2942033ef0364301
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>

    Simplify overflow check via INT_SUBTRACT_WRAPV
    
    * src/editfns.c (check_tm_member): Simplify integer overflow check.
---
 src/editfns.c |   11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/src/editfns.c b/src/editfns.c
index 6b0996d..81c30d3 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -2176,17 +2176,16 @@ usage: (decode-time &optional TIME ZONE)  */)
 }
 
 /* Return OBJ - OFFSET, checking that OBJ is a valid fixnum and that
-   the result is representable as an int.  Assume OFFSET is small and
-   nonnegative.  */
+   the result is representable as an int.  */
 static int
 check_tm_member (Lisp_Object obj, int offset)
 {
-  EMACS_INT n;
   CHECK_NUMBER (obj);
-  n = XINT (obj);
-  if (! (INT_MIN + offset <= n && n - offset <= INT_MAX))
+  EMACS_INT n = XINT (obj);
+  int result;
+  if (INT_SUBTRACT_WRAPV (n, offset, &result))
     time_overflow ();
-  return n - offset;
+  return result;
 }
 
 DEFUN ("encode-time", Fencode_time, Sencode_time, 6, MANY, 0,



reply via email to

[Prev in Thread] Current Thread [Next in Thread]