From 35ee67d3da1d3d2bc5b463e16837451550387d1c Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 2 Oct 2002 20:59:26 +0000 Subject: * tests/entry.test: added entry-20.7 * generic/tkEntry.c (EntryTextVarProc): check if the entry if being deleted before handling an associated textvariable. [Bug #607390 #617446] --- ChangeLog | 7 +++++++ generic/tkEntry.c | 9 ++++++++- tests/entry.test | 12 +++++++++++- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index ed7536f..bd42d5c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2002-10-02 Jeff Hobbs + + * tests/entry.test: added entry-20.7 + * generic/tkEntry.c (EntryTextVarProc): check if the entry if + being deleted before handling an associated textvariable. + [Bug #607390 #617446] + 2002-10-01 Donal K. Fellows * tests/unixSelect.test (unixSelect-1.1[89]): Altered these tests diff --git a/generic/tkEntry.c b/generic/tkEntry.c index 53e0d60..51c459c 100644 --- a/generic/tkEntry.c +++ b/generic/tkEntry.c @@ -14,7 +14,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.31 2002/08/05 04:30:38 dgp Exp $ + * RCS: @(#) $Id: tkEntry.c,v 1.32 2002/10/02 20:59:26 hobbs Exp $ */ #include "tkInt.h" @@ -3295,6 +3295,13 @@ EntryTextVarProc(clientData, interp, name1, name2, flags) Entry *entryPtr = (Entry *) clientData; CONST char *value; + if (entryPtr->flags & ENTRY_DELETED) { + /* + * Just abort early if we entered here while being deleted. + */ + return (char *) NULL; + } + /* * If the variable is unset, then immediately recreate it unless * the whole interpreter is going away. diff --git a/tests/entry.test b/tests/entry.test index 5c6265f..effa631 100644 --- a/tests/entry.test +++ b/tests/entry.test @@ -6,7 +6,7 @@ # Copyright (c) 1998-1999 by Scriptics Corporation. # All rights reserved. # -# RCS: @(#) $Id: entry.test,v 1.12 2002/07/14 05:48:46 dgp Exp $ +# RCS: @(#) $Id: entry.test,v 1.13 2002/10/02 20:59:28 hobbs Exp $ package require tcltest 2.1 namespace import -force tcltest::configure @@ -1588,6 +1588,16 @@ test entry-20.6 {widget deletion while active} { update idle winfo exists .e } 0 +test entry-20.7 {widget deletion with textvariable active} { + # SF bugs 607390 and 617446 + destroy .e + set FOO init + entry .e -textvariable FOO -validate all \ + -vcmd {%W configure -bg white; format 1} + bind .e { set FOO hello } + destroy .e + winfo exists .e +} 0 # XXX Still need to write tests for EntryBlinkProc, EntryFocusProc, # and EntryTextVarProc. -- cgit v0.12