]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-119336: Restore removed _PyLong_NumBits() function (#119418)
authorEthan Smith <ethan@ethanhs.me>
Thu, 30 May 2024 14:48:18 +0000 (07:48 -0700)
committerGitHub <noreply@github.com>
Thu, 30 May 2024 14:48:18 +0000 (14:48 +0000)
It is used by the pywin32 project.

Include/cpython/longobject.h
Include/internal/pycore_long.h
Misc/NEWS.d/next/C API/2024-05-22-17-50-48.gh-issue-119336.ff3qnS.rst [new file with mode: 0644]

index 189229ee1035d837ffefbf68b81b74815cc3d182..96815938c8277a59a5673718b5e117f190f69d23 100644 (file)
@@ -60,6 +60,15 @@ PyAPI_FUNC(Py_ssize_t) PyUnstable_Long_CompactValue(const PyLongObject* op);
 // There are no error cases.
 PyAPI_FUNC(int) _PyLong_Sign(PyObject *v);
 
+/* _PyLong_NumBits.  Return the number of bits needed to represent the
+   absolute value of a long.  For example, this returns 1 for 1 and -1, 2
+   for 2 and -2, and 2 for 3 and -3.  It returns 0 for 0.
+   v must not be NULL, and must be a normalized long.
+   (size_t)-1 is returned and OverflowError set if the true result doesn't
+   fit in a size_t.
+*/
+PyAPI_FUNC(size_t) _PyLong_NumBits(PyObject *v);
+
 /* _PyLong_FromByteArray:  View the n unsigned bytes as a binary integer in
    base 256, and return a Python int with the same numeric value.
    If n is 0, the integer is 0.  Else:
index f04f66d053bab9daeb66c89bdcc07790eac2e8c2..8513695c22e703eb6138b2111d5d5b32a8629396 100644 (file)
@@ -47,17 +47,6 @@ extern "C" {
 # error "_PY_LONG_DEFAULT_MAX_STR_DIGITS smaller than threshold."
 #endif
 
-// _PyLong_NumBits.  Return the number of bits needed to represent the
-// absolute value of a long.  For example, this returns 1 for 1 and -1, 2
-// for 2 and -2, and 2 for 3 and -3.  It returns 0 for 0.
-// v must not be NULL, and must be a normalized long.
-// (size_t)-1 is returned and OverflowError set if the true result doesn't
-// fit in a size_t.
-//
-// Export for 'math' shared extension.
-PyAPI_FUNC(size_t) _PyLong_NumBits(PyObject *v);
-
-
 /* runtime lifecycle */
 
 extern PyStatus _PyLong_InitTypes(PyInterpreterState *);
diff --git a/Misc/NEWS.d/next/C API/2024-05-22-17-50-48.gh-issue-119336.ff3qnS.rst b/Misc/NEWS.d/next/C API/2024-05-22-17-50-48.gh-issue-119336.ff3qnS.rst
new file mode 100644 (file)
index 0000000..e530bb4
--- /dev/null
@@ -0,0 +1 @@
+Restore the removed ``_PyLong_NumBits()`` function. It is used by the pywin32 project. Patch by Ethan Smith