mirror of
https://github.com/python/cpython.git
synced 2025-07-24 19:54:21 +00:00
[3.11] gh-104399: Use newer libtommath APIs when necessary (GH-104407) (#105344)
gh-104399: Use newer libtommath APIs when necessary (GH-104407)
(cherry picked from commit 00d73caf80
)
Co-authored-by: Christopher Chavez <chrischavez@gmx.us>
This commit is contained in:
parent
b8d3bb72b0
commit
c644fe403a
2 changed files with 25 additions and 2 deletions
|
@ -60,6 +60,12 @@ Copyright (C) 1994 Steen Lumholt.
|
|||
|
||||
#include <tclTomMath.h>
|
||||
|
||||
#if defined(TCL_WITH_EXTERNAL_TOMMATH) || (TK_HEX_VERSION >= 0x08070000)
|
||||
#define USE_DEPRECATED_TOMMATH_API 0
|
||||
#else
|
||||
#define USE_DEPRECATED_TOMMATH_API 1
|
||||
#endif
|
||||
|
||||
#if !(defined(MS_WINDOWS) || defined(__CYGWIN__))
|
||||
#define HAVE_CREATEFILEHANDLER
|
||||
#endif
|
||||
|
@ -1083,20 +1089,33 @@ static PyObject*
|
|||
fromBignumObj(TkappObject *tkapp, Tcl_Obj *value)
|
||||
{
|
||||
mp_int bigValue;
|
||||
mp_err err;
|
||||
#if USE_DEPRECATED_TOMMATH_API
|
||||
unsigned long numBytes;
|
||||
#else
|
||||
size_t numBytes;
|
||||
#endif
|
||||
unsigned char *bytes;
|
||||
PyObject *res;
|
||||
|
||||
if (Tcl_GetBignumFromObj(Tkapp_Interp(tkapp), value, &bigValue) != TCL_OK)
|
||||
return Tkinter_Error(tkapp);
|
||||
#if USE_DEPRECATED_TOMMATH_API
|
||||
numBytes = mp_unsigned_bin_size(&bigValue);
|
||||
#else
|
||||
numBytes = mp_ubin_size(&bigValue);
|
||||
#endif
|
||||
bytes = PyMem_Malloc(numBytes);
|
||||
if (bytes == NULL) {
|
||||
mp_clear(&bigValue);
|
||||
return PyErr_NoMemory();
|
||||
}
|
||||
if (mp_to_unsigned_bin_n(&bigValue, bytes,
|
||||
&numBytes) != MP_OKAY) {
|
||||
#if USE_DEPRECATED_TOMMATH_API
|
||||
err = mp_to_unsigned_bin_n(&bigValue, bytes, &numBytes);
|
||||
#else
|
||||
err = mp_to_ubin(&bigValue, bytes, numBytes, NULL);
|
||||
#endif
|
||||
if (err != MP_OKAY) {
|
||||
mp_clear(&bigValue);
|
||||
PyMem_Free(bytes);
|
||||
return PyErr_NoMemory();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue