Skip to content

Commit

Permalink
[3.11] gh-104399: Use newer libtommath APIs when necessary (GH-104407) (
Browse files Browse the repository at this point in the history
#105344)

gh-104399: Use newer libtommath APIs when necessary (GH-104407)
(cherry picked from commit 00d73ca)

Co-authored-by: Christopher Chavez <chrischavez@gmx.us>
  • Loading branch information
miss-islington and chrstphrchvz committed Jun 6, 2023
1 parent b8d3bb7 commit c644fe4
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 2 deletions.
@@ -0,0 +1,4 @@
Prepare the ``_tkinter`` module for building with Tcl 9.0 and future
libtommath by replacing usage of deprecated functions
:c:func:`mp_to_unsigned_bin_n` and :c:func:`mp_unsigned_bin_size`
when necessary.
23 changes: 21 additions & 2 deletions Modules/_tkinter.c
Expand Up @@ -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
Expand Down Expand Up @@ -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();
Expand Down

0 comments on commit c644fe4

Please sign in to comment.