summaryrefslogtreecommitdiffstats
path: root/generic/tkTreeItem.c
diff options
context:
space:
mode:
authortreectrl <treectrl>2006-11-25 20:25:28 (GMT)
committertreectrl <treectrl>2006-11-25 20:25:28 (GMT)
commitd87d7135a20a584da53d1065e35a5c9434639be2 (patch)
tree81166b583ba96da9ce88f2fdd9ca20d614dd6ee8 /generic/tkTreeItem.c
parenta2e7d157d580bb34f593b0164ac3ea4ab569e6b6 (diff)
downloadtktreectrl-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.c8
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];
}