From: Paul Eggert Date: Wed, 8 Jun 2016 07:35:11 +0000 (-0700) Subject: Simplify overflow check via INT_SUBTRACT_WRAPV X-Git-Tag: emacs-26.0.90~1840^2~259 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=e8ba94bf83515a64523532cc2942033ef0364301;p=emacs.git Simplify overflow check via INT_SUBTRACT_WRAPV * src/editfns.c (check_tm_member): Simplify integer overflow check. --- diff --git a/src/editfns.c b/src/editfns.c index 6b0996d65eb..81c30d30d62 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,