summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorChristopher Chavez <chrischavez@gmx.us>2023-04-14 14:04:16 (GMT)
committerGitHub <noreply@github.com>2023-04-14 14:04:16 (GMT)
commit69e2c42f42f1d6fb1287ac5f9c6d19f2822df8fe (patch)
tree3f1445bac2d12a9c8988957d02ce544c90ad1215 /Modules
parentbe8903eb9d66ef1229f93a3a6036aeafc3bb0bda (diff)
downloadcpython-69e2c42f42f1d6fb1287ac5f9c6d19f2822df8fe.zip
cpython-69e2c42f42f1d6fb1287ac5f9c6d19f2822df8fe.tar.gz
cpython-69e2c42f42f1d6fb1287ac5f9c6d19f2822df8fe.tar.bz2
gh-103532: Remove TKINTER_PROTECT_LOADTK code (GH-103535)
This was only needed for Tk 8.4.13 and older, but Tkinter already requires at least 8.5.12.
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_tkinter.c47
-rw-r--r--Modules/tkappinit.c24
-rw-r--r--Modules/tkinter.h8
3 files changed, 0 insertions, 79 deletions
diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
index 20e01c7..385a059 100644
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -324,10 +324,6 @@ static int quitMainLoop = 0;
static int errorInCmd = 0;
static PyObject *excInCmd;
-#ifdef TKINTER_PROTECT_LOADTK
-static int tk_load_failed = 0;
-#endif
-
static PyObject *Tkapp_UnicodeResult(TkappObject *);
@@ -532,17 +528,7 @@ Tcl_AppInit(Tcl_Interp *interp)
return TCL_OK;
}
-#ifdef TKINTER_PROTECT_LOADTK
- if (tk_load_failed) {
- PySys_WriteStderr("Tk_Init error: %s\n", TKINTER_LOADTK_ERRMSG);
- return TCL_ERROR;
- }
-#endif
-
if (Tk_Init(interp) == TCL_ERROR) {
-#ifdef TKINTER_PROTECT_LOADTK
- tk_load_failed = 1;
-#endif
PySys_WriteStderr("Tk_Init error: %s\n", Tcl_GetStringResult(interp));
return TCL_ERROR;
}
@@ -635,12 +621,6 @@ Tkapp_New(const char *screenName, const char *className,
Tcl_SetVar(v->interp,
"_tkinter_skip_tk_init", "1", TCL_GLOBAL_ONLY);
}
-#ifdef TKINTER_PROTECT_LOADTK
- else if (tk_load_failed) {
- Tcl_SetVar(v->interp,
- "_tkinter_tk_failed", "1", TCL_GLOBAL_ONLY);
- }
-#endif
/* some initial arguments need to be in argv */
if (sync || use) {
@@ -702,18 +682,6 @@ Tkapp_New(const char *screenName, const char *className,
if (Tcl_AppInit(v->interp) != TCL_OK) {
PyObject *result = Tkinter_Error(v);
-#ifdef TKINTER_PROTECT_LOADTK
- if (wantTk) {
- const char *_tkinter_tk_failed;
- _tkinter_tk_failed = Tcl_GetVar(v->interp,
- "_tkinter_tk_failed", TCL_GLOBAL_ONLY);
-
- if ( _tkinter_tk_failed != NULL &&
- strcmp(_tkinter_tk_failed, "1") == 0) {
- tk_load_failed = 1;
- }
- }
-#endif
Py_DECREF((PyObject *)v);
return (TkappObject *)result;
}
@@ -2780,18 +2748,6 @@ _tkinter_tkapp_loadtk_impl(TkappObject *self)
const char * _tk_exists = NULL;
int err;
-#ifdef TKINTER_PROTECT_LOADTK
- /* Up to Tk 8.4.13, Tk_Init deadlocks on the second call when the
- * first call failed.
- * To avoid the deadlock, we just refuse the second call through
- * a static variable.
- */
- if (tk_load_failed) {
- PyErr_SetString(Tkinter_TclError, TKINTER_LOADTK_ERRMSG);
- return NULL;
- }
-#endif
-
/* We want to guard against calling Tk_Init() multiple times */
CHECK_TCL_APPARTMENT;
ENTER_TCL
@@ -2811,9 +2767,6 @@ _tkinter_tkapp_loadtk_impl(TkappObject *self)
if (_tk_exists == NULL || strcmp(_tk_exists, "1") != 0) {
if (Tk_Init(interp) == TCL_ERROR) {
Tkinter_Error(self);
-#ifdef TKINTER_PROTECT_LOADTK
- tk_load_failed = 1;
-#endif
return NULL;
}
}
diff --git a/Modules/tkappinit.c b/Modules/tkappinit.c
index 7616d9d..67d6250 100644
--- a/Modules/tkappinit.c
+++ b/Modules/tkappinit.c
@@ -18,18 +18,10 @@
#include "tkinter.h"
-#ifdef TKINTER_PROTECT_LOADTK
-/* See Tkapp_TkInit in _tkinter.c for the usage of tk_load_faile */
-static int tk_load_failed;
-#endif
-
int
Tcl_AppInit(Tcl_Interp *interp)
{
const char *_tkinter_skip_tk_init;
-#ifdef TKINTER_PROTECT_LOADTK
- const char *_tkinter_tk_failed;
-#endif
#ifdef TK_AQUA
#ifndef MAX_PATH_LEN
@@ -90,23 +82,7 @@ Tcl_AppInit(Tcl_Interp *interp)
return TCL_OK;
}
-#ifdef TKINTER_PROTECT_LOADTK
- _tkinter_tk_failed = Tcl_GetVar(interp,
- "_tkinter_tk_failed", TCL_GLOBAL_ONLY);
-
- if (tk_load_failed || (
- _tkinter_tk_failed != NULL &&
- strcmp(_tkinter_tk_failed, "1") == 0)) {
- Tcl_SetResult(interp, TKINTER_LOADTK_ERRMSG, TCL_STATIC);
- return TCL_ERROR;
- }
-#endif
-
if (Tk_Init(interp) == TCL_ERROR) {
-#ifdef TKINTER_PROTECT_LOADTK
- tk_load_failed = 1;
- Tcl_SetVar(interp, "_tkinter_tk_failed", "1", TCL_GLOBAL_ONLY);
-#endif
return TCL_ERROR;
}
diff --git a/Modules/tkinter.h b/Modules/tkinter.h
index cb5a806..40281c2 100644
--- a/Modules/tkinter.h
+++ b/Modules/tkinter.h
@@ -16,12 +16,4 @@
(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_HEX_VERSION < 0x0804020e
-#define TKINTER_PROTECT_LOADTK
-#define TKINTER_LOADTK_ERRMSG \
- "Calling Tk_Init again after a previous call failed might deadlock"
-#endif
-
#endif /* !TKINTER_H */