summaryrefslogtreecommitdiffstats
path: root/Objects/intobject.c
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2001-09-03 08:35:41 (GMT)
committerTim Peters <tim.peters@gmail.com>2001-09-03 08:35:41 (GMT)
commit32f453eaa476c78376cd721d29ba8ab726e400bb (patch)
treeaec8b2e54ec4a0a7cbd66569d3a8531db118f153 /Objects/intobject.c
parent5d2b77cf31c5a3cbabc74936831480b9caea3a12 (diff)
downloadcpython-32f453eaa476c78376cd721d29ba8ab726e400bb.zip
cpython-32f453eaa476c78376cd721d29ba8ab726e400bb.tar.gz
cpython-32f453eaa476c78376cd721d29ba8ab726e400bb.tar.bz2
New restriction on pow(x, y, z): If z is not None, x and y must be of
integer types, and y must be >= 0. See discussion at http://sf.net/tracker/index.php?func=detail&aid=457066&group_id=5470&atid=105470
Diffstat (limited to 'Objects/intobject.c')
-rw-r--r--Objects/intobject.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/Objects/intobject.c b/Objects/intobject.c
index 108e658..eaf869f 100644
--- a/Objects/intobject.c
+++ b/Objects/intobject.c
@@ -575,6 +575,11 @@ int_pow(PyIntObject *v, PyIntObject *w, PyIntObject *z)
CONVERT_TO_LONG(v, iv);
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");
+ return NULL;
+ }
/* Return a float. This works because we know that
this calls float_pow() which converts its
arguments to double. */