mirror of https://github.com/python/cpython
bpo-27961: Replace PY_LLONG_MAX, PY_LLONG_MIN and PY_ULLONG_MAX with standard macros (GH-15385)
Use standard constants LLONG_MIN, LLONG_MAX and ULLONG_MAX.
This commit is contained in:
parent
99eb70a9eb
commit
1f9f69dd4c
|
@ -195,8 +195,8 @@ distinguished from a number. Use :c:func:`PyErr_Occurred` to disambiguate.
|
||||||
:meth:`__int__` method (if present) to convert it to a
|
:meth:`__int__` method (if present) to convert it to a
|
||||||
:c:type:`PyLongObject`.
|
:c:type:`PyLongObject`.
|
||||||
|
|
||||||
If the value of *obj* is greater than :const:`PY_LLONG_MAX` or less than
|
If the value of *obj* is greater than :const:`LLONG_MAX` or less than
|
||||||
:const:`PY_LLONG_MIN`, set *\*overflow* to ``1`` or ``-1``, respectively,
|
:const:`LLONG_MIN`, set *\*overflow* to ``1`` or ``-1``, respectively,
|
||||||
and return ``-1``; otherwise, set *\*overflow* to ``0``. If any other
|
and return ``-1``; otherwise, set *\*overflow* to ``0``. If any other
|
||||||
exception occurs set *\*overflow* to ``0`` and return ``-1`` as usual.
|
exception occurs set *\*overflow* to ``0`` and return ``-1`` as usual.
|
||||||
|
|
||||||
|
|
|
@ -51,16 +51,16 @@ PyAPI_FUNC(int) PyThread_acquire_lock(PyThread_type_lock, int);
|
||||||
#if defined(_POSIX_THREADS)
|
#if defined(_POSIX_THREADS)
|
||||||
/* PyThread_acquire_lock_timed() uses _PyTime_FromNanoseconds(us * 1000),
|
/* PyThread_acquire_lock_timed() uses _PyTime_FromNanoseconds(us * 1000),
|
||||||
convert microseconds to nanoseconds. */
|
convert microseconds to nanoseconds. */
|
||||||
# define PY_TIMEOUT_MAX (PY_LLONG_MAX / 1000)
|
# define PY_TIMEOUT_MAX (LLONG_MAX / 1000)
|
||||||
#elif defined (NT_THREADS)
|
#elif defined (NT_THREADS)
|
||||||
/* In the NT API, the timeout is a DWORD and is expressed in milliseconds */
|
/* In the NT API, the timeout is a DWORD and is expressed in milliseconds */
|
||||||
# if 0xFFFFFFFFLL * 1000 < PY_LLONG_MAX
|
# if 0xFFFFFFFFLL * 1000 < LLONG_MAX
|
||||||
# define PY_TIMEOUT_MAX (0xFFFFFFFFLL * 1000)
|
# define PY_TIMEOUT_MAX (0xFFFFFFFFLL * 1000)
|
||||||
# else
|
# else
|
||||||
# define PY_TIMEOUT_MAX PY_LLONG_MAX
|
# define PY_TIMEOUT_MAX LLONG_MAX
|
||||||
# endif
|
# endif
|
||||||
#else
|
#else
|
||||||
# define PY_TIMEOUT_MAX PY_LLONG_MAX
|
# define PY_TIMEOUT_MAX LLONG_MAX
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -639,7 +639,7 @@ test_long_long_and_overflow(PyObject *self, PyObject *Py_UNUSED(ignored))
|
||||||
int overflow;
|
int overflow;
|
||||||
|
|
||||||
/* Test that overflow is set properly for a large value. */
|
/* Test that overflow is set properly for a large value. */
|
||||||
/* num is a number larger than PY_LLONG_MAX on a typical machine. */
|
/* num is a number larger than LLONG_MAX on a typical machine. */
|
||||||
num = PyLong_FromString("FFFFFFFFFFFFFFFFFFFFFFFF", NULL, 16);
|
num = PyLong_FromString("FFFFFFFFFFFFFFFFFFFFFFFF", NULL, 16);
|
||||||
if (num == NULL)
|
if (num == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -655,8 +655,8 @@ test_long_long_and_overflow(PyObject *self, PyObject *Py_UNUSED(ignored))
|
||||||
return raiseTestError("test_long_long_and_overflow",
|
return raiseTestError("test_long_long_and_overflow",
|
||||||
"overflow was not set to 1");
|
"overflow was not set to 1");
|
||||||
|
|
||||||
/* Same again, with num = PY_LLONG_MAX + 1 */
|
/* Same again, with num = LLONG_MAX + 1 */
|
||||||
num = PyLong_FromLongLong(PY_LLONG_MAX);
|
num = PyLong_FromLongLong(LLONG_MAX);
|
||||||
if (num == NULL)
|
if (num == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
one = PyLong_FromLong(1L);
|
one = PyLong_FromLong(1L);
|
||||||
|
@ -683,7 +683,7 @@ test_long_long_and_overflow(PyObject *self, PyObject *Py_UNUSED(ignored))
|
||||||
"overflow was not set to 1");
|
"overflow was not set to 1");
|
||||||
|
|
||||||
/* Test that overflow is set properly for a large negative value. */
|
/* Test that overflow is set properly for a large negative value. */
|
||||||
/* num is a number smaller than PY_LLONG_MIN on a typical platform */
|
/* num is a number smaller than LLONG_MIN on a typical platform */
|
||||||
num = PyLong_FromString("-FFFFFFFFFFFFFFFFFFFFFFFF", NULL, 16);
|
num = PyLong_FromString("-FFFFFFFFFFFFFFFFFFFFFFFF", NULL, 16);
|
||||||
if (num == NULL)
|
if (num == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -699,8 +699,8 @@ test_long_long_and_overflow(PyObject *self, PyObject *Py_UNUSED(ignored))
|
||||||
return raiseTestError("test_long_long_and_overflow",
|
return raiseTestError("test_long_long_and_overflow",
|
||||||
"overflow was not set to -1");
|
"overflow was not set to -1");
|
||||||
|
|
||||||
/* Same again, with num = PY_LLONG_MIN - 1 */
|
/* Same again, with num = LLONG_MIN - 1 */
|
||||||
num = PyLong_FromLongLong(PY_LLONG_MIN);
|
num = PyLong_FromLongLong(LLONG_MIN);
|
||||||
if (num == NULL)
|
if (num == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
one = PyLong_FromLong(1L);
|
one = PyLong_FromLong(1L);
|
||||||
|
@ -757,7 +757,7 @@ test_long_long_and_overflow(PyObject *self, PyObject *Py_UNUSED(ignored))
|
||||||
return raiseTestError("test_long_long_and_overflow",
|
return raiseTestError("test_long_long_and_overflow",
|
||||||
"overflow was set incorrectly");
|
"overflow was set incorrectly");
|
||||||
|
|
||||||
num = PyLong_FromLongLong(PY_LLONG_MAX);
|
num = PyLong_FromLongLong(LLONG_MAX);
|
||||||
if (num == NULL)
|
if (num == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
overflow = 1234;
|
overflow = 1234;
|
||||||
|
@ -765,14 +765,14 @@ test_long_long_and_overflow(PyObject *self, PyObject *Py_UNUSED(ignored))
|
||||||
Py_DECREF(num);
|
Py_DECREF(num);
|
||||||
if (value == -1 && PyErr_Occurred())
|
if (value == -1 && PyErr_Occurred())
|
||||||
return NULL;
|
return NULL;
|
||||||
if (value != PY_LLONG_MAX)
|
if (value != LLONG_MAX)
|
||||||
return raiseTestError("test_long_long_and_overflow",
|
return raiseTestError("test_long_long_and_overflow",
|
||||||
"expected return value PY_LLONG_MAX");
|
"expected return value LLONG_MAX");
|
||||||
if (overflow != 0)
|
if (overflow != 0)
|
||||||
return raiseTestError("test_long_long_and_overflow",
|
return raiseTestError("test_long_long_and_overflow",
|
||||||
"overflow was not cleared");
|
"overflow was not cleared");
|
||||||
|
|
||||||
num = PyLong_FromLongLong(PY_LLONG_MIN);
|
num = PyLong_FromLongLong(LLONG_MIN);
|
||||||
if (num == NULL)
|
if (num == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
overflow = 0;
|
overflow = 0;
|
||||||
|
@ -780,9 +780,9 @@ test_long_long_and_overflow(PyObject *self, PyObject *Py_UNUSED(ignored))
|
||||||
Py_DECREF(num);
|
Py_DECREF(num);
|
||||||
if (value == -1 && PyErr_Occurred())
|
if (value == -1 && PyErr_Occurred())
|
||||||
return NULL;
|
return NULL;
|
||||||
if (value != PY_LLONG_MIN)
|
if (value != LLONG_MIN)
|
||||||
return raiseTestError("test_long_long_and_overflow",
|
return raiseTestError("test_long_long_and_overflow",
|
||||||
"expected return value PY_LLONG_MIN");
|
"expected return value LLONG_MIN");
|
||||||
if (overflow != 0)
|
if (overflow != 0)
|
||||||
return raiseTestError("test_long_long_and_overflow",
|
return raiseTestError("test_long_long_and_overflow",
|
||||||
"overflow was not cleared");
|
"overflow was not cleared");
|
||||||
|
@ -6710,9 +6710,9 @@ PyInit__testcapi(void)
|
||||||
PyModule_AddObject(m, "FLT_MIN", PyFloat_FromDouble(FLT_MIN));
|
PyModule_AddObject(m, "FLT_MIN", PyFloat_FromDouble(FLT_MIN));
|
||||||
PyModule_AddObject(m, "DBL_MAX", PyFloat_FromDouble(DBL_MAX));
|
PyModule_AddObject(m, "DBL_MAX", PyFloat_FromDouble(DBL_MAX));
|
||||||
PyModule_AddObject(m, "DBL_MIN", PyFloat_FromDouble(DBL_MIN));
|
PyModule_AddObject(m, "DBL_MIN", PyFloat_FromDouble(DBL_MIN));
|
||||||
PyModule_AddObject(m, "LLONG_MAX", PyLong_FromLongLong(PY_LLONG_MAX));
|
PyModule_AddObject(m, "LLONG_MAX", PyLong_FromLongLong(LLONG_MAX));
|
||||||
PyModule_AddObject(m, "LLONG_MIN", PyLong_FromLongLong(PY_LLONG_MIN));
|
PyModule_AddObject(m, "LLONG_MIN", PyLong_FromLongLong(LLONG_MIN));
|
||||||
PyModule_AddObject(m, "ULLONG_MAX", PyLong_FromUnsignedLongLong(PY_ULLONG_MAX));
|
PyModule_AddObject(m, "ULLONG_MAX", PyLong_FromUnsignedLongLong(ULLONG_MAX));
|
||||||
PyModule_AddObject(m, "PY_SSIZE_T_MAX", PyLong_FromSsize_t(PY_SSIZE_T_MAX));
|
PyModule_AddObject(m, "PY_SSIZE_T_MAX", PyLong_FromSsize_t(PY_SSIZE_T_MAX));
|
||||||
PyModule_AddObject(m, "PY_SSIZE_T_MIN", PyLong_FromSsize_t(PY_SSIZE_T_MIN));
|
PyModule_AddObject(m, "PY_SSIZE_T_MIN", PyLong_FromSsize_t(PY_SSIZE_T_MIN));
|
||||||
PyModule_AddObject(m, "SIZEOF_PYGC_HEAD", PyLong_FromSsize_t(sizeof(PyGC_Head)));
|
PyModule_AddObject(m, "SIZEOF_PYGC_HEAD", PyLong_FromSsize_t(sizeof(PyGC_Head)));
|
||||||
|
|
|
@ -1158,7 +1158,7 @@ PyLong_AsVoidPtr(PyObject *vv)
|
||||||
* rewritten to use the newer PyLong_{As,From}ByteArray API.
|
* rewritten to use the newer PyLong_{As,From}ByteArray API.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define PY_ABS_LLONG_MIN (0-(unsigned long long)PY_LLONG_MIN)
|
#define PY_ABS_LLONG_MIN (0-(unsigned long long)LLONG_MIN)
|
||||||
|
|
||||||
/* Create a new int object from a C long long int. */
|
/* Create a new int object from a C long long int. */
|
||||||
|
|
||||||
|
@ -1462,11 +1462,11 @@ PyLong_AsLongLongAndOverflow(PyObject *vv, int *overflow)
|
||||||
/* Haven't lost any bits, but casting to long requires extra
|
/* Haven't lost any bits, but casting to long requires extra
|
||||||
* care (see comment above).
|
* care (see comment above).
|
||||||
*/
|
*/
|
||||||
if (x <= (unsigned long long)PY_LLONG_MAX) {
|
if (x <= (unsigned long long)LLONG_MAX) {
|
||||||
res = (long long)x * sign;
|
res = (long long)x * sign;
|
||||||
}
|
}
|
||||||
else if (sign < 0 && x == PY_ABS_LLONG_MIN) {
|
else if (sign < 0 && x == PY_ABS_LLONG_MIN) {
|
||||||
res = PY_LLONG_MIN;
|
res = LLONG_MIN;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
*overflow = sign;
|
*overflow = sign;
|
||||||
|
@ -5020,7 +5020,7 @@ simple:
|
||||||
/* a fits into a long, so b must too */
|
/* a fits into a long, so b must too */
|
||||||
x = PyLong_AsLong((PyObject *)a);
|
x = PyLong_AsLong((PyObject *)a);
|
||||||
y = PyLong_AsLong((PyObject *)b);
|
y = PyLong_AsLong((PyObject *)b);
|
||||||
#elif PY_LLONG_MAX >> PyLong_SHIFT >> PyLong_SHIFT
|
#elif LLONG_MAX >> PyLong_SHIFT >> PyLong_SHIFT
|
||||||
x = PyLong_AsLongLong((PyObject *)a);
|
x = PyLong_AsLongLong((PyObject *)a);
|
||||||
y = PyLong_AsLongLong((PyObject *)b);
|
y = PyLong_AsLongLong((PyObject *)b);
|
||||||
#else
|
#else
|
||||||
|
@ -5039,7 +5039,7 @@ simple:
|
||||||
}
|
}
|
||||||
#if LONG_MAX >> PyLong_SHIFT >> PyLong_SHIFT
|
#if LONG_MAX >> PyLong_SHIFT >> PyLong_SHIFT
|
||||||
return PyLong_FromLong(x);
|
return PyLong_FromLong(x);
|
||||||
#elif PY_LLONG_MAX >> PyLong_SHIFT >> PyLong_SHIFT
|
#elif LLONG_MAX >> PyLong_SHIFT >> PyLong_SHIFT
|
||||||
return PyLong_FromLongLong(x);
|
return PyLong_FromLongLong(x);
|
||||||
#else
|
#else
|
||||||
# error "_PyLong_GCD"
|
# error "_PyLong_GCD"
|
||||||
|
|
Loading…
Reference in New Issue