]> granicus.if.org Git - python/commitdiff
Make the error msgs in our pow() implementations consistent.
authorTim Peters <tim.peters@gmail.com>
Wed, 5 Sep 2001 06:24:58 +0000 (06:24 +0000)
committerTim Peters <tim.peters@gmail.com>
Wed, 5 Sep 2001 06:24:58 +0000 (06:24 +0000)
Objects/floatobject.c
Objects/intobject.c
Objects/longobject.c

index 8443aff4aeaf781e07ee98e0106de5f97ce904bd..258c4dd3a6f11a516c556b3724f4ed226d2958b2 100644 (file)
@@ -495,8 +495,8 @@ float_pow(PyObject *v, PyObject *w, PyObject *z)
        double iv, iw, ix;
 
        if ((PyObject *)z != Py_None) {
-               PyErr_SetString(PyExc_TypeError,
-                       "3rd argument to floating pow() must be None");
+               PyErr_SetString(PyExc_TypeError, "pow() 3rd argument not "
+                       "allowed unless all other arguments are integers");
                return NULL;
        }
 
index 73d5e77e359312a411ec56f024a4abb5554b731e..12edb510026511ec4a027201f9b1039bb67b008f 100644 (file)
@@ -589,8 +589,8 @@ int_pow(PyIntObject *v, PyIntObject *w, PyIntObject *z)
        CONVERT_TO_LONG(w, iw);
        if (iw < 0) {
                if ((PyObject *)z != Py_None) {
-                       PyErr_SetString(PyExc_TypeError, "integer pow() arg "
-                            "3 must not be specified when arg 2 is < 0");
+                       PyErr_SetString(PyExc_TypeError, "pow() 2nd argument "
+                            "cannot be negative when 3rd argument specified");
                        return NULL;
                }
                /* Return a float.  This works because we know that
@@ -603,7 +603,7 @@ int_pow(PyIntObject *v, PyIntObject *w, PyIntObject *z)
                CONVERT_TO_LONG(z, iz);
                if (iz == 0) {
                        PyErr_SetString(PyExc_ValueError,
-                                       "pow() arg 3 cannot be 0");
+                                       "pow() 3rd argument cannot be 0");
                        return NULL;
                }
        }
index 91e0b66afb117f878aa38970c1bba8aa7544871b..e9e408db95761c7f65b2d1f4c94eb5ee0aff5abe 100644 (file)
@@ -1685,15 +1685,22 @@ long_pow(PyObject *v, PyObject *w, PyObject *x)
                Py_INCREF(Py_NotImplemented);
                return Py_NotImplemented;
        }
-       
+
+       if (c != Py_None && ((PyLongObject *)c)->ob_size == 0) {
+               PyErr_SetString(PyExc_ValueError,
+                               "pow() 3rd argument cannot be 0");
+               z = NULL;
+               goto error;
+       }
+
        size_b = b->ob_size;
        if (size_b < 0) {
                Py_DECREF(a);
                Py_DECREF(b);
                Py_DECREF(c);
                if (x != Py_None) {
-                       PyErr_SetString(PyExc_TypeError, "integer pow() arg "
-                            "3 must not be specified when arg 2 is < 0");
+                       PyErr_SetString(PyExc_TypeError, "pow() 2nd argument "
+                            "cannot be negative when 3rd argument specified");
                        return NULL;
                }
                /* Return a float.  This works because we know that