]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Changes to make range checks portable to 64-bit machines.
authorGuido van Rossum <guido@python.org>
Tue, 26 Oct 1993 15:21:51 +0000 (15:21 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 26 Oct 1993 15:21:51 +0000 (15:21 +0000)
Objects/intobject.c

index 6fcbe6973381a96ff2b847537b51d300946cb705..2953ffad3c7500166719b6d6d5124ba1bb2deab6 100644 (file)
@@ -27,6 +27,24 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #include "allobjects.h"
 #include "modsupport.h"
 
+#ifdef __STDC__
+#include <limits.h>
+#endif
+
+#ifndef LONG_MAX
+#define LONG_MAX 0X7FFFFFFFL
+#endif
+
+#ifndef LONG_MIN
+#define LONG_MIN (-LONG_MAX-1)
+#endif
+
+#ifndef CHAR_BIT
+#define CHAR_BIT 8
+#endif
+
+#define LONG_BIT (CHAR_BIT * sizeof(long))
+
 /* Standard Booleans */
 
 intobject FalseObject = {
@@ -229,7 +247,7 @@ int_mul(v, w)
        a = v->ob_ival;
        b = w->ob_ival;
        x = (double)a * (double)b;
-       if (x > 0x7fffffff || x < (double) (long) 0x80000000)
+       if (x > LONG_MAX || x < (double) (long) (LONG_MIN))
                return err_ovf("integer multiplication");
        return newintobject(a * b);
 }
@@ -387,7 +405,7 @@ int_lshift(v, w)
                INCREF(v);
                return (object *) v;
        }
-       if (b >= 32) {
+       if (b >= LONG_BIT) {
                return newintobject(0L);
        }
        a = (unsigned long)a << b;
@@ -410,7 +428,7 @@ int_rshift(v, w)
                INCREF(v);
                return (object *) v;
        }
-       if (b >= 32) {
+       if (b >= LONG_BIT) {
                if (a < 0)
                        a = -1;
                else