From c310185c081110741fae914c06c7aaf673ad3d0d Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 27 Oct 2020 21:34:33 +0100 Subject: [PATCH] bpo-42161: Remove private _PyLong_Zero and _PyLong_One (GH-23003) Use PyLong_FromLong(0) and PyLong_FromLong(1) of the public C API instead. For Python internals, _PyLong_GetZero() and _PyLong_GetOne() of pycore_long.h can be used. --- Include/longobject.h | 3 --- Objects/longobject.c | 18 ------------------ Tools/c-analyzer/TODO | 2 -- 3 files changed, 23 deletions(-) diff --git a/Include/longobject.h b/Include/longobject.h index 06e3e249040..e2301d7abfc 100644 --- a/Include/longobject.h +++ b/Include/longobject.h @@ -210,9 +210,6 @@ PyAPI_FUNC(PyObject *) _PyLong_GCD(PyObject *, PyObject *); #endif /* !Py_LIMITED_API */ #ifndef Py_LIMITED_API -PyAPI_DATA(PyObject *) _PyLong_Zero; -PyAPI_DATA(PyObject *) _PyLong_One; - PyAPI_FUNC(PyObject *) _PyLong_Rshift(PyObject *, size_t); PyAPI_FUNC(PyObject *) _PyLong_Lshift(PyObject *, size_t); #endif diff --git a/Objects/longobject.c b/Objects/longobject.c index ae63eba1345..e0d6410fe68 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -32,9 +32,6 @@ _Py_IDENTIFIER(big); (Py_SIZE(x) == 0 ? (sdigit)0 : \ (sdigit)(x)->ob_digit[0])) -PyObject *_PyLong_Zero = NULL; -PyObject *_PyLong_One = NULL; - #define IS_SMALL_INT(ival) (-NSMALLNEGINTS <= (ival) && (ival) < NSMALLPOSINTS) #define IS_SMALL_UINT(ival) ((ival) < NSMALLPOSINTS) @@ -5723,16 +5720,6 @@ _PyLong_Init(PyThreadState *tstate) } if (_Py_IsMainInterpreter(tstate)) { - _PyLong_Zero = PyLong_FromLong(0); - if (_PyLong_Zero == NULL) { - return 0; - } - - _PyLong_One = PyLong_FromLong(1); - if (_PyLong_One == NULL) { - return 0; - } - /* initialize int_info */ if (Int_InfoType.tp_name == NULL) { if (PyStructSequence_InitType2(&Int_InfoType, &int_info_desc) < 0) { @@ -5747,11 +5734,6 @@ _PyLong_Init(PyThreadState *tstate) void _PyLong_Fini(PyThreadState *tstate) { - if (_Py_IsMainInterpreter(tstate)) { - Py_CLEAR(_PyLong_One); - Py_CLEAR(_PyLong_Zero); - } - for (Py_ssize_t i = 0; i < NSMALLNEGINTS + NSMALLPOSINTS; i++) { Py_CLEAR(tstate->interp->small_ints[i]); } diff --git a/Tools/c-analyzer/TODO b/Tools/c-analyzer/TODO index f5c1a92f856..1fd8052268b 100644 --- a/Tools/c-analyzer/TODO +++ b/Tools/c-analyzer/TODO @@ -154,8 +154,6 @@ Objects/bytesobject.c:nullstring static PyBytesO Objects/codeobject.c:PyCode_NewEmpty():nulltuple static PyObject *nulltuple Objects/dictobject.c:empty_values static PyObject *empty_values[1] Objects/listobject.c:indexerr static PyObject *indexerr -Objects/longobject.c:_PyLong_One PyObject *_PyLong_One -Objects/longobject.c:_PyLong_Zero PyObject *_PyLong_Zero Objects/longobject.c:small_ints static PyLongObject small_ints[NSMALLNEGINTS + NSMALLPOSINTS] Objects/setobject.c:emptyfrozenset static PyObject *emptyfrozenset Python/context.c:_token_missing static PyObject *_token_missing