diff options
author | treectrl <treectrl> | 2006-11-25 20:25:28 (GMT) |
---|---|---|
committer | treectrl <treectrl> | 2006-11-25 20:25:28 (GMT) |
commit | d87d7135a20a584da53d1065e35a5c9434639be2 (patch) | |
tree | 81166b583ba96da9ce88f2fdd9ca20d614dd6ee8 /generic/tkTreeItem.c | |
parent | a2e7d157d580bb34f593b0164ac3ea4ab569e6b6 (diff) | |
download | tktreectrl-d87d7135a20a584da53d1065e35a5c9434639be2.zip tktreectrl-d87d7135a20a584da53d1065e35a5c9434639be2.tar.gz tktreectrl-d87d7135a20a584da53d1065e35a5c9434639be2.tar.bz2 |
Fix potential segfaults when a display update is requested in the middle of drawing items.
Diffstat (limited to 'generic/tkTreeItem.c')
-rw-r--r-- | generic/tkTreeItem.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/generic/tkTreeItem.c b/generic/tkTreeItem.c index f7753d0..87debaf 100644 --- a/generic/tkTreeItem.c +++ b/generic/tkTreeItem.c @@ -5,7 +5,7 @@ * * Copyright (c) 2002-2006 Tim Baker * - * RCS: @(#) $Id: tkTreeItem.c,v 1.93 2006/11/22 03:32:12 treectrl Exp $ + * RCS: @(#) $Id: tkTreeItem.c,v 1.94 2006/11/25 20:25:28 treectrl Exp $ */ #include "tkTreeCtrl.h" @@ -4404,15 +4404,21 @@ SpanWalkProc_UpdateWindowPositions( ) { StyleDrawArgs drawArgsCopy; + int requests; if ((drawArgs->x >= drawArgs->bounds[2]) || (drawArgs->x + drawArgs->width <= drawArgs->bounds[0]) || (drawArgs->style == NULL)) return 0; + TreeDisplay_GetReadyForTrouble(tree, &requests); + drawArgsCopy = *drawArgs; TreeStyle_UpdateWindowPositions(&drawArgsCopy); + if (TreeDisplay_WasThereTrouble(tree, requests)) + return 1; + /* Stop walking if we went past the right edge of the display area. */ return drawArgs->x + drawArgs->width >= drawArgs->bounds[2]; } |