diff options
Diffstat (limited to 'generic/tkTreeCtrl.c')
-rw-r--r-- | generic/tkTreeCtrl.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/generic/tkTreeCtrl.c b/generic/tkTreeCtrl.c index 8961b54..9641b2a 100644 --- a/generic/tkTreeCtrl.c +++ b/generic/tkTreeCtrl.c @@ -7,7 +7,7 @@ * Copyright (c) 2002-2003 Christian Krone * Copyright (c) 2003-2005 ActiveState, a division of Sophos * - * RCS: @(#) $Id: tkTreeCtrl.c,v 1.101 2007/01/21 23:18:35 treectrl Exp $ + * RCS: @(#) $Id: tkTreeCtrl.c,v 1.102 2007/01/22 23:29:25 treectrl Exp $ */ #include "tkTreeCtrl.h" @@ -429,6 +429,12 @@ TreeObjCmd( /* Window must exist on Win32. */ TreeTheme_Init(tree); + /* + * Keep a hold of the associated tkwin until we destroy the listbox, + * otherwise Tk might free it while we still need it. + */ + Tcl_Preserve((ClientData) tkwin); + if (Tk_InitOptions(interp, (char *) tree, optionTable, tkwin) != TCL_OK) { Tk_DestroyWindow(tree->tkwin); return TCL_ERROR; @@ -1781,6 +1787,7 @@ TreeDestroy( AllocHax_Finalize(tree->allocData); #endif + Tcl_Release(tree->tkwin); WFREE(tree, TreeCtrl); } |