diff options
author | treectrl <treectrl> | 2008-02-29 20:49:22 (GMT) |
---|---|---|
committer | treectrl <treectrl> | 2008-02-29 20:49:22 (GMT) |
commit | 85933efe263b7a9fe321d98909cfd7462eae6a93 (patch) | |
tree | 5d9eb578304124d72b95e84a079da60ce9ecd180 /generic | |
parent | 77528a726241e0a6a9a1baf7b5cff6c1ffd3f0b0 (diff) | |
download | tktreectrl-85933efe263b7a9fe321d98909cfd7462eae6a93.zip tktreectrl-85933efe263b7a9fe321d98909cfd7462eae6a93.tar.gz tktreectrl-85933efe263b7a9fe321d98909cfd7462eae6a93.tar.bz2 |
Fixed integer overflow in the "item bbox" command when getting the bounds of a column or element in a big list. New TreeRectangle struct replaces the use of XRectangle which uses short integers.
Diffstat (limited to 'generic')
-rw-r--r-- | generic/tkTreeCtrl.h | 12 | ||||
-rw-r--r-- | generic/tkTreeDrag.c | 4 | ||||
-rw-r--r-- | generic/tkTreeItem.c | 10 | ||||
-rw-r--r-- | generic/tkTreeStyle.c | 4 |
4 files changed, 18 insertions, 12 deletions
diff --git a/generic/tkTreeCtrl.h b/generic/tkTreeCtrl.h index aa9e96d..9bcb054 100644 --- a/generic/tkTreeCtrl.h +++ b/generic/tkTreeCtrl.h @@ -7,7 +7,7 @@ * Copyright (c) 2002-2003 Christian Krone * Copyright (c) 2003 ActiveState Corporation * - * RCS: @(#) $Id: tkTreeCtrl.h,v 1.92 2008/01/22 01:03:02 treectrl Exp $ + * RCS: @(#) $Id: tkTreeCtrl.h,v 1.93 2008/02/29 20:49:22 treectrl Exp $ */ #include "tkPort.h" @@ -99,6 +99,12 @@ typedef struct int height; } TreeDrawable; +typedef struct +{ + int x, y; + int width, height; +} TreeRectangle; + typedef struct GCCache GCCache; struct GCCache { @@ -565,7 +571,7 @@ extern void TreeItem_Identify(TreeCtrl *tree, TreeItem item_, int lock, int x, i extern void TreeItem_Identify2(TreeCtrl *tree, TreeItem item_, int x1, int y1, int x2, int y2, Tcl_Obj *listObj); extern int TreeItem_GetRects(TreeCtrl *tree, TreeItem item_, - TreeColumn treeColumn, int objc, Tcl_Obj *CONST objv[], XRectangle rects[]); + TreeColumn treeColumn, int objc, Tcl_Obj *CONST objv[], TreeRectangle rects[]); extern int TreeItem_Indent(TreeCtrl *tree, TreeItem item_); extern void Tree_UpdateItemIndex(TreeCtrl *tree); extern void Tree_DeselectHidden(TreeCtrl *tree); @@ -645,7 +651,7 @@ extern int TreeStyle_GetSortData(TreeCtrl *tree, TreeStyle style_, int elemIndex #if 0 extern int TreeStyle_ValidateElements(TreeCtrl *tree, TreeStyle style_, int objc, Tcl_Obj *CONST objv[]); #endif -extern int TreeStyle_GetElemRects(StyleDrawArgs *drawArgs, int objc, Tcl_Obj *CONST objv[], XRectangle rects[]); +extern int TreeStyle_GetElemRects(StyleDrawArgs *drawArgs, int objc, Tcl_Obj *CONST objv[], TreeRectangle rects[]); extern int TreeElementCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]); extern int TreeStyleCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]); extern int TreeStyle_ChangeState(TreeCtrl *tree, TreeStyle style_, int state1, int state2); diff --git a/generic/tkTreeDrag.c b/generic/tkTreeDrag.c index e172830..c98f9ff 100644 --- a/generic/tkTreeDrag.c +++ b/generic/tkTreeDrag.c @@ -5,7 +5,7 @@ * * Copyright (c) 2002-2008 Tim Baker * - * RCS: @(#) $Id: tkTreeDrag.c,v 1.27 2008/01/22 01:03:02 treectrl Exp $ + * RCS: @(#) $Id: tkTreeDrag.c,v 1.28 2008/02/29 20:49:22 treectrl Exp $ */ #include "tkTreeCtrl.h" @@ -395,7 +395,7 @@ TreeDragImageCmd( TreeItem item; TreeItemColumn itemColumn; TreeColumn treeColumn; - XRectangle rects[128]; + TreeRectangle rects[128]; DragElem *elem; int i, count, result = TCL_OK; diff --git a/generic/tkTreeItem.c b/generic/tkTreeItem.c index 9b7ce4a..8f9b0a7 100644 --- a/generic/tkTreeItem.c +++ b/generic/tkTreeItem.c @@ -5,7 +5,7 @@ * * Copyright (c) 2002-2008 Tim Baker * - * RCS: @(#) $Id: tkTreeItem.c,v 1.104 2008/01/22 01:03:02 treectrl Exp $ + * RCS: @(#) $Id: tkTreeItem.c,v 1.105 2008/02/29 20:49:22 treectrl Exp $ */ #include "tkTreeCtrl.h" @@ -7347,7 +7347,7 @@ TreeItemCmd( int x, y, w, h; int count; TreeColumn treeColumn; - XRectangle rect; + TreeRectangle rect; if (objc == 4) { if (Tree_ItemBbox(tree, item, COLUMN_LOCK_NONE, &x, &y, &w, &h) < 0) @@ -8563,7 +8563,7 @@ SpanWalkProc_GetRects( TreeColumn treeColumn; int count; Tcl_Obj *CONST *objv; - XRectangle *rects; + TreeRectangle *rects; int result; } *data = clientData; @@ -8644,7 +8644,7 @@ TreeItem_GetRects( * 1+ means objv[] contains names of elements * to get rects for. */ Tcl_Obj *CONST objv[], /* Array of element names or NULL. */ - XRectangle rects[] /* Out: returned bounding boxes. */ + TreeRectangle rects[] /* Out: returned bounding boxes. */ ) { int left, top, width, height; @@ -8653,7 +8653,7 @@ TreeItem_GetRects( TreeColumn treeColumn; int count; Tcl_Obj *CONST *objv; - XRectangle *rects; + TreeRectangle *rects; int result; } clientData; diff --git a/generic/tkTreeStyle.c b/generic/tkTreeStyle.c index 6195a6a..5b2a686 100644 --- a/generic/tkTreeStyle.c +++ b/generic/tkTreeStyle.c @@ -5,7 +5,7 @@ * * Copyright (c) 2002-2008 Tim Baker * - * RCS: @(#) $Id: tkTreeStyle.c,v 1.77 2008/01/22 01:03:02 treectrl Exp $ + * RCS: @(#) $Id: tkTreeStyle.c,v 1.78 2008/02/29 20:49:22 treectrl Exp $ */ #include "tkTreeCtrl.h" @@ -6499,7 +6499,7 @@ TreeStyle_GetElemRects( StyleDrawArgs *drawArgs, /* Various args. */ int objc, /* Number of element names. */ Tcl_Obj *CONST objv[], /* Array of element names. */ - XRectangle rects[] /* Returned rectangles. */ + TreeRectangle rects[] /* Returned rectangles. */ ) { |