summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authortreectrl <treectrl>2008-02-29 20:49:22 (GMT)
committertreectrl <treectrl>2008-02-29 20:49:22 (GMT)
commit85933efe263b7a9fe321d98909cfd7462eae6a93 (patch)
tree5d9eb578304124d72b95e84a079da60ce9ecd180 /generic
parent77528a726241e0a6a9a1baf7b5cff6c1ffd3f0b0 (diff)
downloadtktreectrl-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.h12
-rw-r--r--generic/tkTreeDrag.c4
-rw-r--r--generic/tkTreeItem.c10
-rw-r--r--generic/tkTreeStyle.c4
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. */
)
{