pyke/pyke-mLib.c: Raise `OverflowError' on out-of-range inputs. mdw/bakery
authorMark Wooding <mdw@distorted.org.uk>
Sat, 23 Nov 2019 15:05:39 +0000 (15:05 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 11 Apr 2020 11:49:31 +0000 (12:49 +0100)
This seems to match better what Python does under these conditions.

pyke-mLib.c

index 30f6735..900dc41 100644 (file)
@@ -70,7 +70,7 @@ end:
      uint64 t;                                                         \
      if (!convk64(o, &k)) goto end;                                    \
      t = GET64(uint64, k);                                             \
-     if (t > MASK##n) VALERR("out of range");                          \
+     if (t > MASK##n) OVFERR("out of range");                          \
      *p = t;                                                           \
    } while (0)
 #else
@@ -87,7 +87,7 @@ end:
       CONVu64(n);                                                      \
     else {                                                             \
       if (!convulong(o, &u)) goto end;                                 \
-      if (u > MASK##n) VALERR("out of range");                         \
+      if (u > MASK##n) OVFERR("out of range");                         \
       *p = u;                                                          \
     }                                                                  \
     return (1);                                                                \
@@ -121,7 +121,7 @@ int convk64(PyObject *o, void *pp)
   hi = PyInt_AsUnsignedLongMask(i);
   if ((t = PyNumber_InPlaceRshift(i, i32)) == 0) goto end;
   Py_DECREF(i); i = t;
-  if (PyObject_IsTrue(i)) VALERR("out of range");
+  if (PyObject_IsTrue(i)) OVFERR("out of range");
   SET64(*(kludge64 *)pp, hi, lo);
 #endif
   rc = 1;