mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
bpo-37999: Simplify the conversion code for %c, %d, %x, etc. (GH-20437)
Since PyLong_AsLong() no longer use __int__, explicit call of PyNumber_Index() before it is no longer needed.
This commit is contained in:
parent
5b96370030
commit
e67f7db3c3
3 changed files with 26 additions and 58 deletions
|
@ -22,22 +22,15 @@ char _PyByteArray_empty_string[] = "";
|
|||
static int
|
||||
_getbytevalue(PyObject* arg, int *value)
|
||||
{
|
||||
long face_value;
|
||||
int overflow;
|
||||
long face_value = PyLong_AsLongAndOverflow(arg, &overflow);
|
||||
|
||||
if (PyLong_Check(arg)) {
|
||||
face_value = PyLong_AsLong(arg);
|
||||
} else {
|
||||
PyObject *index = PyNumber_Index(arg);
|
||||
if (index == NULL) {
|
||||
*value = -1;
|
||||
return 0;
|
||||
}
|
||||
face_value = PyLong_AsLong(index);
|
||||
Py_DECREF(index);
|
||||
if (face_value == -1 && PyErr_Occurred()) {
|
||||
*value = -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (face_value < 0 || face_value >= 256) {
|
||||
/* this includes the OverflowError in case the long is too large */
|
||||
/* this includes an overflow in converting to C long */
|
||||
PyErr_SetString(PyExc_ValueError, "byte must be in range(0, 256)");
|
||||
*value = -1;
|
||||
return 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue