[Python-checkins] cpython (merge 3.4 -> default): Issue #16840. Turn off bignum support in tkinter with with Tcl earlier than

serhiy.storchaka python-checkins at python.org
Wed Apr 22 10:02:45 CEST 2015


https://hg.python.org/cpython/rev/701b830abbf0
changeset:   95764:701b830abbf0
parent:      95761:9f13e9385186
parent:      95763:97519d85b5c8
user:        Serhiy Storchaka <storchaka at gmail.com>
date:        Wed Apr 22 10:59:32 2015 +0300
summary:
  Issue #16840. Turn off bignum support in tkinter with with Tcl earlier than 8.5.8
(tclTomMath.h was broken) and non-final Tcl 8.6.
Removed TK_VERSION_HEX.

files:
  Lib/test/test_tcl.py |   4 +++-
  Modules/_tkinter.c   |   7 ++++---
  Modules/tkinter.h    |  16 ++++++++--------
  3 files changed, 15 insertions(+), 12 deletions(-)


diff --git a/Lib/test/test_tcl.py b/Lib/test/test_tcl.py
--- a/Lib/test/test_tcl.py
+++ b/Lib/test/test_tcl.py
@@ -131,7 +131,9 @@
 
     def get_integers(self):
         integers = (0, 1, -1, 2**31-1, -2**31, 2**31, -2**31-1, 2**63-1, -2**63)
-        if tcl_version >= (8, 5):  # bignum was added in Tcl 8.5
+        # bignum was added in Tcl 8.5, but its support is able only since 8.5.8
+        if (get_tk_patchlevel() >= (8, 6, 0, 'final') or
+            (8, 5, 8) <= get_tk_patchlevel() < (8, 6)):
             integers += (2**63, -2**63-1, 2**1000, -2**1000)
         return integers
 
diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -52,11 +52,12 @@
 
 #include "tkinter.h"
 
-#if TK_VERSION_HEX < 0x08040002
+#if TK_HEX_VERSION < 0x08040200
 #error "Tk older than 8.4 not supported"
 #endif
 
-#if TK_VERSION_HEX >= 0x08050002
+#if TK_HEX_VERSION >= 0x08050208 && TK_HEX_VERSION < 0x08060000 || \
+    TK_HEX_VERSION >= 0x08060200
 #define HAVE_LIBTOMMAMTH
 #include <tclTomMath.h>
 #endif
@@ -1227,7 +1228,7 @@
             Tcl_GetCharLength(value));
     }
 
-#if TK_VERSION_HEX >= 0x08050000
+#if TK_HEX_VERSION >= 0x08050000
     if (app->BooleanType == NULL &&
         strcmp(value->typePtr->name, "booleanString") == 0) {
         /* booleanString type is not registered in Tcl */
diff --git a/Modules/tkinter.h b/Modules/tkinter.h
--- a/Modules/tkinter.h
+++ b/Modules/tkinter.h
@@ -4,24 +4,24 @@
 /* This header is used to share some macros between _tkinter.c and
  * tkappinit.c.
  * Be sure to include tk.h before including this header so
- * TK_VERSION_HEX is properly defined. */
+ * TK_HEX_VERSION is properly defined. */
 
 /* TK_RELEASE_LEVEL is always one of the following:
- *	TCL_ALPHA_RELEASE   0
+ *  TCL_ALPHA_RELEASE   0
  *  TCL_BETA_RELEASE    1
  *  TCL_FINAL_RELEASE   2
  */
-#define TK_VERSION_HEX ((TK_MAJOR_VERSION << 24) | \
-		(TK_MINOR_VERSION << 16) | \
-		(TK_RELEASE_SERIAL << 8) | \
-		(TK_RELEASE_LEVEL << 0))
+#define TK_HEX_VERSION ((TK_MAJOR_VERSION << 24) | \
+                        (TK_MINOR_VERSION << 16) | \
+                        (TK_RELEASE_LEVEL << 8) | \
+                        (TK_RELEASE_SERIAL << 0))
 
 /* Protect Tk 8.4.13 and older from a deadlock that happens when trying
  * to load tk after a failed attempt. */
-#if TK_VERSION_HEX < 0x08040e02
+#if TK_HEX_VERSION < 0x0804020e
 #define TKINTER_PROTECT_LOADTK
 #define TKINTER_LOADTK_ERRMSG \
-	"Calling Tk_Init again after a previous call failed might deadlock"
+        "Calling Tk_Init again after a previous call failed might deadlock"
 #endif
 
 #endif /* !TKINTER_H */

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list