Use _PyLong_IsNegative instead of _PyLong_Sign if appropriate. (GH-120493)

It is faster and more obvious.
This commit is contained in:
Serhiy Storchaka 2024-06-24 09:49:01 +03:00 committed by GitHub
parent 35e998f560
commit 02df679574
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 3 additions and 7 deletions

View File

@ -1606,7 +1606,7 @@ PyCArrayType_init(PyObject *self, PyObject *args, PyObject *kwds)
goto error;
}
if (_PyLong_Sign(length_attr) == -1) {
if (_PyLong_IsNegative((PyLongObject *)length_attr)) {
Py_DECREF(length_attr);
PyErr_SetString(PyExc_ValueError,
"The '_length_' attribute must not be negative");

View File

@ -10,7 +10,6 @@
#include "pycore_crossinterp.h" // struct _xid
#include "pycore_interp.h" // _PyInterpreterState_IDIncref()
#include "pycore_initconfig.h" // _PyErr_SetFromPyStatus()
#include "pycore_long.h" // _PyLong_IsNegative()
#include "pycore_modsupport.h" // _PyArg_BadArgument()
#include "pycore_namespace.h" // _PyNamespace_New()
#include "pycore_pybuffer.h" // _PyBuffer_ReleaseInInterpreterAndRawFree()

View File

@ -10,7 +10,7 @@
#include "Python.h"
#include "pycore_abstract.h" // _PyNumber_Index()
#include "pycore_initconfig.h" // _PyStatus_OK()
#include "pycore_long.h" // _PyLong_Sign()
#include "pycore_long.h" // _PyLong_IsNegative()
#include "pycore_pyerrors.h" // _PyErr_ChainExceptions1()
#include "pycore_pystate.h" // _PyInterpreterState_GET()
@ -544,10 +544,7 @@ PyNumber_AsOff_t(PyObject *item, PyObject *err)
*/
if (!err) {
assert(PyLong_Check(value));
/* Whether or not it is less than or equal to
zero is determined by the sign of ob_size
*/
if (_PyLong_Sign(value) < 0)
if (_PyLong_IsNegative((PyLongObject *)value))
result = PY_OFF_T_MIN;
else
result = PY_OFF_T_MAX;