diff options
author | hobbs <hobbs> | 2001-07-02 23:52:36 (GMT) |
---|---|---|
committer | hobbs <hobbs> | 2001-07-02 23:52:36 (GMT) |
commit | c238b3e34e715ebabf756de119a3835f05ccc948 (patch) | |
tree | 7023b60ff29daa4a069d3e98fc63d32f1c00e8e7 | |
parent | 0c316c90bf8fb99f438f2335cba517bc2438e71a (diff) | |
download | tk-c238b3e34e715ebabf756de119a3835f05ccc948.zip tk-c238b3e34e715ebabf756de119a3835f05ccc948.tar.gz tk-c238b3e34e715ebabf756de119a3835f05ccc948.tar.bz2 |
* generic/tkEntry.c (DestroyEntry): used Tcl_EventuallyFree
instead of ckfree for entryPtr to prevent FMRs. [Bug #413904]
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | generic/tkEntry.c | 10 |
2 files changed, 11 insertions, 4 deletions
@@ -1,3 +1,8 @@ +2001-07-02 Jeff Hobbs <jeffh@ActiveState.com> + + * generic/tkEntry.c (DestroyEntry): used Tcl_EventuallyFree + instead of ckfree for entryPtr to prevent FMRs. [Bug #413904] + 2001-06-26 Mo DeJong <mdejong@redhat.com> * unix/Makefile.in: diff --git a/generic/tkEntry.c b/generic/tkEntry.c index 5555b64..805b208 100644 --- a/generic/tkEntry.c +++ b/generic/tkEntry.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: tkEntry.c,v 1.19 2001/04/03 04:40:50 hobbs Exp $ + * RCS: @(#) $Id: tkEntry.c,v 1.20 2001/07/02 23:52:36 hobbs Exp $ */ #include "tkInt.h" @@ -1363,13 +1363,15 @@ DestroyEntry(memPtr) entryPtr->tkwin = NULL; /* - * Tcl_EventuallyFree should be used here or better yet in the + * Tcl_EventuallyFree should be used in * DestroyNotify branch of EntryEventProc. However, that can lead * complications in Tk_FreeConfigOptions where the display for the * entry has been deleted by Tk_DestroyWindow, which is needed - * when freeing the cursor option. + * when freeing the cursor option. Also, there can be a timing + * issue were we wouldn't get called until too late in Tk clean-up, + * and it complains that we haven't freed our fonts yet. */ - ckfree((char *) entryPtr); + Tcl_EventuallyFree((ClientData) entryPtr, TCL_DYNAMIC); } /* |