diff src/floatfns.c @ 2039:fd0cbe945410

[xemacs-hg @ 2004-04-22 03:24:00 by james] Change VALBITS to INT_VALBITS in a number of places.
author james
date Thu, 22 Apr 2004 03:24:02 +0000
parents 4e6a63799f08
children 471242c84954
line wrap: on
line diff
--- a/src/floatfns.c	Wed Apr 21 21:50:35 2004 +0000
+++ b/src/floatfns.c	Thu Apr 22 03:24:02 2004 +0000
@@ -128,15 +128,16 @@
   bignum_set_double (scratch_bignum, x);
   return Fcanonicalize_number (make_bignum_bg (scratch_bignum));
 #else
-  if (x >= ((EMACS_INT) 1 << (VALBITS-1))
-      || x <= - ((EMACS_INT) 1 << (VALBITS-1)) - (EMACS_INT) 1)
-  {
-    if (!UNBOUNDP (num2))
-      range_error2 (name, num, num2);
-    else
-      range_error (name, num);
-  }
-  return (make_int ((EMACS_INT) x));
+  REGISTER EMACS_INT result = (EMACS_INT) x;
+
+  if (result > EMACS_INT_MAX || result < EMACS_INT_MIN)
+    {
+      if (!UNBOUNDP (num2))
+	range_error2 (name, num, num2);
+      else
+	range_error (name, num);
+    }
+  return make_int (result);
 #endif /* HAVE_BIGNUM */
 }
 
@@ -798,7 +799,7 @@
   double f = extract_float (number);
 
   if (f == 0.0)
-    return make_int (- (EMACS_INT)(((EMACS_UINT) 1) << (VALBITS - 1))); /* most-negative-fixnum */
+    return make_int (EMACS_INT_MIN);
 #ifdef HAVE_LOGB
   {
     Lisp_Object val;