summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorhobbs <hobbs>2006-03-30 01:38:39 (GMT)
committerhobbs <hobbs>2006-03-30 01:38:39 (GMT)
commitb76407c7250e530679c766f3a13f1a521669c9f9 (patch)
treebdb0fb84fe7fc63e1a1f9b5e02e0ae0dc71a3758 /generic
parent90b12f3425f3402f9b53a9b0980beef8c9852eaf (diff)
downloadtk-b76407c7250e530679c766f3a13f1a521669c9f9.zip
tk-b76407c7250e530679c766f3a13f1a521669c9f9.tar.gz
tk-b76407c7250e530679c766f3a13f1a521669c9f9.tar.bz2
* generic/tkWindow.c (DeleteWindowsExitProc): added comments
* generic/tkOption.c (TkOptionDeadWindow): handle OptionThreadExitProc being called before DeleteWindowsExitProc.
Diffstat (limited to 'generic')
-rw-r--r--generic/tkOption.c8
-rw-r--r--generic/tkWindow.c6
2 files changed, 10 insertions, 4 deletions
diff --git a/generic/tkOption.c b/generic/tkOption.c
index 7f1b007..064a68f 100644
--- a/generic/tkOption.c
+++ b/generic/tkOption.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkOption.c,v 1.15 2002/08/05 04:30:40 dgp Exp $
+ * RCS: @(#) $Id: tkOption.c,v 1.15.2.1 2006/03/30 01:38:39 hobbs Exp $
*/
#include "tkPort.h"
@@ -770,9 +770,13 @@ TkOptionDeadWindow(winPtr)
/*
* If this window is in the option stacks, then clear the stacks.
+ *
+ * XXX: OptionThreadExitProc will be invoked before DeleteWindowsExitProc
+ * XXX: if it is thread-specific (which it should be), invalidating the
+ * XXX: tsd. Tk shutdown needs to be verified to handle this correctly.
*/
- if (winPtr->optionLevel != -1) {
+ if (tsdPtr->initialized && (winPtr->optionLevel != -1)) {
int i;
for (i = 1; i <= tsdPtr->curLevel; i++) {
diff --git a/generic/tkWindow.c b/generic/tkWindow.c
index 500aaac..4994d1e 100644
--- a/generic/tkWindow.c
+++ b/generic/tkWindow.c
@@ -12,7 +12,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkWindow.c,v 1.56.2.7 2006/03/29 05:38:14 hobbs Exp $
+ * RCS: @(#) $Id: tkWindow.c,v 1.56.2.8 2006/03/30 01:38:39 hobbs Exp $
*/
#include "tkPort.h"
@@ -357,7 +357,9 @@ CreateTopLevelWindow(interp, parent, name, screenName, flags)
/*
* Create exit handler to delete all windows when the application
- * exits. This must be a thread exit handler.
+ * exits. This must be a thread exit handler, but there may be
+ * ordering issues with other exit handlers
+ * (i.e. OptionThreadExitProc).
*/
Tcl_CreateThreadExitHandler(DeleteWindowsExitProc,