mirror of
https://github.com/python/cpython.git
synced 2026-05-06 20:51:17 -04:00
gh-121485: Always use 64-bit integers for integers bits count (GH-121486)
Use 64-bit integers instead of platform specific size_t or Py_ssize_t to represent the number of bits in Python integer.
This commit is contained in:
+7
-7
@@ -169,9 +169,9 @@ safe_multiply(PyObject *v, PyObject *w)
|
||||
if (PyLong_Check(v) && PyLong_Check(w) &&
|
||||
!_PyLong_IsZero((PyLongObject *)v) && !_PyLong_IsZero((PyLongObject *)w)
|
||||
) {
|
||||
size_t vbits = _PyLong_NumBits(v);
|
||||
size_t wbits = _PyLong_NumBits(w);
|
||||
if (vbits == (size_t)-1 || wbits == (size_t)-1) {
|
||||
uint64_t vbits = _PyLong_NumBits(v);
|
||||
uint64_t wbits = _PyLong_NumBits(w);
|
||||
if (vbits == (uint64_t)-1 || wbits == (uint64_t)-1) {
|
||||
return NULL;
|
||||
}
|
||||
if (vbits + wbits > MAX_INT_SIZE) {
|
||||
@@ -215,9 +215,9 @@ safe_power(PyObject *v, PyObject *w)
|
||||
if (PyLong_Check(v) && PyLong_Check(w) &&
|
||||
!_PyLong_IsZero((PyLongObject *)v) && _PyLong_IsPositive((PyLongObject *)w)
|
||||
) {
|
||||
size_t vbits = _PyLong_NumBits(v);
|
||||
uint64_t vbits = _PyLong_NumBits(v);
|
||||
size_t wbits = PyLong_AsSize_t(w);
|
||||
if (vbits == (size_t)-1 || wbits == (size_t)-1) {
|
||||
if (vbits == (uint64_t)-1 || wbits == (size_t)-1) {
|
||||
return NULL;
|
||||
}
|
||||
if (vbits > MAX_INT_SIZE / wbits) {
|
||||
@@ -234,9 +234,9 @@ safe_lshift(PyObject *v, PyObject *w)
|
||||
if (PyLong_Check(v) && PyLong_Check(w) &&
|
||||
!_PyLong_IsZero((PyLongObject *)v) && !_PyLong_IsZero((PyLongObject *)w)
|
||||
) {
|
||||
size_t vbits = _PyLong_NumBits(v);
|
||||
uint64_t vbits = _PyLong_NumBits(v);
|
||||
size_t wbits = PyLong_AsSize_t(w);
|
||||
if (vbits == (size_t)-1 || wbits == (size_t)-1) {
|
||||
if (vbits == (uint64_t)-1 || wbits == (size_t)-1) {
|
||||
return NULL;
|
||||
}
|
||||
if (wbits > MAX_INT_SIZE || vbits > MAX_INT_SIZE - wbits) {
|
||||
|
||||
Reference in New Issue
Block a user