diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2023-06-06 14:01:28 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-06 14:01:28 (GMT) |
commit | 27cbeb08b80138d093b9b08eb41744d249c386e6 (patch) | |
tree | 446e26ff7553f14f4ea21e0e9b75195a348a44c6 /Modules/_tkinter.c | |
parent | 82ab13c49a77b0d73e6cd5c7ecfe0de1b1036819 (diff) | |
download | cpython-27cbeb08b80138d093b9b08eb41744d249c386e6.zip cpython-27cbeb08b80138d093b9b08eb41744d249c386e6.tar.gz cpython-27cbeb08b80138d093b9b08eb41744d249c386e6.tar.bz2 |
[3.12] gh-104399: Use newer libtommath APIs when necessary (GH-104407) (#105343)
gh-104399: Use newer libtommath APIs when necessary (GH-104407)
(cherry picked from commit 00d73caf804c0474980e471347d6385757af975f)
Co-authored-by: Christopher Chavez <chrischavez@gmx.us>
Diffstat (limited to 'Modules/_tkinter.c')
-rw-r--r-- | Modules/_tkinter.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index 49c9444..15f9c04 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -65,6 +65,12 @@ Copyright (C) 1994 Steen Lumholt. #endif #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 @@ -1053,20 +1059,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(); |