Commit 42fc137e authored by Martin v. Löwis's avatar Martin v. Löwis

Patch #1024670: Support int objects in PyLong_AsUnsignedLong[Mask].

parent a1c07551
...@@ -12,7 +12,7 @@ What's New in Python 2.4 beta 1? ...@@ -12,7 +12,7 @@ What's New in Python 2.4 beta 1?
Core and builtins Core and builtins
----------------- -----------------
... - PyLong_AsUnsignedLong[Mask] now support int objects as well.
Extension modules Extension modules
----------------- -----------------
......
...@@ -245,6 +245,15 @@ PyLong_AsUnsignedLong(PyObject *vv) ...@@ -245,6 +245,15 @@ PyLong_AsUnsignedLong(PyObject *vv)
int i; int i;
if (vv == NULL || !PyLong_Check(vv)) { if (vv == NULL || !PyLong_Check(vv)) {
if (vv != NULL && PyInt_Check(vv)) {
long val = PyInt_AsLong(vv);
if (val < 0) {
PyErr_SetString(PyExc_OverflowError,
"can't convert negative value to unsigned long");
return (unsigned long) -1;
}
return val;
}
PyErr_BadInternalCall(); PyErr_BadInternalCall();
return (unsigned long) -1; return (unsigned long) -1;
} }
...@@ -279,6 +288,8 @@ PyLong_AsUnsignedLongMask(PyObject *vv) ...@@ -279,6 +288,8 @@ PyLong_AsUnsignedLongMask(PyObject *vv)
int i, sign; int i, sign;
if (vv == NULL || !PyLong_Check(vv)) { if (vv == NULL || !PyLong_Check(vv)) {
if (vv != NULL && PyInt_Check(vv))
return PyInt_AsUnsignedLongMask(vv);
PyErr_BadInternalCall(); PyErr_BadInternalCall();
return (unsigned long) -1; return (unsigned long) -1;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment