Skip to content

Commit ca38684

Browse files
committed
Fix [Bug 1252702]
1 parent 57709ee commit ca38684

File tree

12 files changed

+78
-72
lines changed

12 files changed

+78
-72
lines changed

ChangeLog

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
2005-08-11 Donal K. Fellows <donal.k.fellows@man.ac.uk>
2+
3+
* generic/tkCanvLine.c, generic/tkCanvPoly.c, generic/tkCanvText.c:
4+
* generic/tkCanvas.c, generic/tkConfig.c, generic/tkFocus.c:
5+
* generic/tkFrame.c, generic/tkGrid.c, generic/tkImgPhoto.c:
6+
* generic/tkPack.c, generic/tkPanedWindow.c: Don't pass size_t
7+
arguments to Tcl_GetStringFromObj, even with casting; it's not
8+
portable to 64-bit systems. [Bug 1252702]
9+
110
2005-08-09 Daniel Steffen <das@users.sourceforge.net>
211

312
* macosx/tkMacOSXCarbonEvents.c (new): moved carbon events code into

generic/tkCanvLine.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
* See the file "license.terms" for information on usage and redistribution
1111
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
1212
*
13-
* RCS: @(#) $Id: tkCanvLine.c,v 1.13 2003/02/09 07:48:22 hobbs Exp $
13+
* RCS: @(#) $Id: tkCanvLine.c,v 1.13.2.1 2005/08/11 12:17:09 dkf Exp $
1414
*/
1515

1616
#include <stdio.h>
@@ -1729,11 +1729,11 @@ GetLineIndex(interp, canvas, itemPtr, obj, indexPtr)
17291729
int *indexPtr; /* Where to store converted index. */
17301730
{
17311731
LineItem *linePtr = (LineItem *) itemPtr;
1732-
size_t length;
1733-
char *string = Tcl_GetStringFromObj(obj, (int *) &length);
1732+
int length;
1733+
char *string = Tcl_GetStringFromObj(obj, &length);
17341734

17351735
if (string[0] == 'e') {
1736-
if (strncmp(string, "end", length) == 0) {
1736+
if (strncmp(string, "end", (unsigned) length) == 0) {
17371737
*indexPtr = 2*linePtr->numPoints;
17381738
} else {
17391739
badIndex:

generic/tkCanvPoly.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
* See the file "license.terms" for information on usage and redistribution
1111
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
1212
*
13-
* RCS: @(#) $Id: tkCanvPoly.c,v 1.10.2.1 2003/05/11 00:57:09 hobbs Exp $
13+
* RCS: @(#) $Id: tkCanvPoly.c,v 1.10.2.2 2005/08/11 12:17:09 dkf Exp $
1414
*/
1515

1616
#include <stdio.h>
@@ -1662,11 +1662,11 @@ GetPolygonIndex(interp, canvas, itemPtr, obj, indexPtr)
16621662
int *indexPtr; /* Where to store converted index. */
16631663
{
16641664
PolygonItem *polyPtr = (PolygonItem *) itemPtr;
1665-
size_t length;
1666-
char *string = Tcl_GetStringFromObj(obj, (int *) &length);
1665+
int length;
1666+
char *string = Tcl_GetStringFromObj(obj, &length);
16671667

16681668
if (string[0] == 'e') {
1669-
if (strncmp(string, "end", length) == 0) {
1669+
if (strncmp(string, "end", (unsigned) length) == 0) {
16701670
*indexPtr = 2*(polyPtr->numPoints - polyPtr->autoClosed);
16711671
} else {
16721672
badIndex:

generic/tkCanvText.c

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
* See the file "license.terms" for information on usage and redistribution
1010
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
1111
*
12-
* RCS: @(#) $Id: tkCanvText.c,v 1.15.2.1 2004/06/08 20:44:11 mdejong Exp $
12+
* RCS: @(#) $Id: tkCanvText.c,v 1.15.2.2 2005/08/11 12:17:09 dkf Exp $
1313
*/
1414

1515
#include <stdio.h>
@@ -1247,27 +1247,25 @@ GetTextIndex(interp, canvas, itemPtr, obj, indexPtr)
12471247
* index. */
12481248
{
12491249
TextItem *textPtr = (TextItem *) itemPtr;
1250-
size_t length;
1251-
int c;
1250+
int c, length;
12521251
TkCanvas *canvasPtr = (TkCanvas *) canvas;
12531252
Tk_CanvasTextInfo *textInfoPtr = textPtr->textInfoPtr;
1254-
char *string = Tcl_GetStringFromObj(obj, (int *) &length);
1253+
char *string = Tcl_GetStringFromObj(obj, &length);
12551254

12561255
c = string[0];
1257-
length = strlen(string);
12581256

1259-
if ((c == 'e') && (strncmp(string, "end", length) == 0)) {
1257+
if ((c == 'e') && (strncmp(string, "end", (unsigned) length) == 0)) {
12601258
*indexPtr = textPtr->numChars;
1261-
} else if ((c == 'i') && (strncmp(string, "insert", length) == 0)) {
1259+
} else if ((c=='i') && (strncmp(string, "insert", (unsigned) length)==0)) {
12621260
*indexPtr = textPtr->insertPos;
1263-
} else if ((c == 's') && (strncmp(string, "sel.first", length) == 0)
1261+
} else if ((c=='s') && (strncmp(string, "sel.first", (unsigned) length)==0)
12641262
&& (length >= 5)) {
12651263
if (textInfoPtr->selItemPtr != itemPtr) {
12661264
Tcl_SetResult(interp, "selection isn't in item", TCL_STATIC);
12671265
return TCL_ERROR;
12681266
}
12691267
*indexPtr = textInfoPtr->selectFirst;
1270-
} else if ((c == 's') && (strncmp(string, "sel.last", length) == 0)
1268+
} else if ((c=='s') && (strncmp(string, "sel.last", (unsigned) length)==0)
12711269
&& (length >= 5)) {
12721270
if (textInfoPtr->selItemPtr != itemPtr) {
12731271
Tcl_SetResult(interp, "selection isn't in item", TCL_STATIC);

generic/tkCanvas.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
* See the file "license.terms" for information on usage and redistribution
1313
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
1414
*
15-
* RCS: @(#) $Id: tkCanvas.c,v 1.21.2.2 2005/06/21 17:29:16 dgp Exp $
15+
* RCS: @(#) $Id: tkCanvas.c,v 1.21.2.3 2005/08/11 12:17:09 dkf Exp $
1616
*/
1717

1818
/* #define USE_OLD_TAG_SEARCH 1 */
@@ -521,8 +521,7 @@ CanvasWidgetCmd(clientData, interp, objc, objv)
521521
Tcl_Obj *CONST objv[]; /* Argument objects. */
522522
{
523523
TkCanvas *canvasPtr = (TkCanvas *) clientData;
524-
unsigned int length;
525-
int c, result;
524+
int c, length, result;
526525
Tk_Item *itemPtr = NULL; /* Initialization needed only to
527526
* prevent compiler warning. */
528527
#ifdef USE_OLD_TAG_SEARCH
@@ -933,12 +932,12 @@ CanvasWidgetCmd(clientData, interp, objc, objv)
933932
result = TCL_ERROR;
934933
goto done;
935934
}
936-
arg = Tcl_GetStringFromObj(objv[2], (int *) &length);
935+
arg = Tcl_GetStringFromObj(objv[2], &length);
937936
c = arg[0];
938937
Tcl_MutexLock(&typeListMutex);
939938
for (typePtr = typeList; typePtr != NULL; typePtr = typePtr->nextPtr) {
940939
if ((c == typePtr->name[0])
941-
&& (strncmp(arg, typePtr->name, length) == 0)) {
940+
&& (strncmp(arg, typePtr->name, (unsigned) length) == 0)) {
942941
if (matchPtr != NULL) {
943942
Tcl_MutexUnlock(&typeListMutex);
944943
badType:
@@ -5571,7 +5570,7 @@ GetStringsFromObjs(argc, objv)
55715570
}
55725571
argv = (CONST char **) ckalloc((argc+1) * sizeof(char *));
55735572
for (i = 0; i < argc; i++) {
5574-
argv[i]=Tcl_GetStringFromObj(objv[i], (int *) NULL);
5573+
argv[i] = Tcl_GetStringFromObj(objv[i], NULL);
55755574
}
55765575
argv[argc] = 0;
55775576
return argv;

generic/tkConfig.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
* See the file "license.terms" for information on usage and redistribution
1010
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
1111
*
12-
* RCS: @(#) $Id: tkConfig.c,v 1.18 2002/08/05 04:30:38 dgp Exp $
12+
* RCS: @(#) $Id: tkConfig.c,v 1.18.2.1 2005/08/11 12:17:09 dkf Exp $
1313
*/
1414

1515
/*
@@ -1158,7 +1158,7 @@ GetOptionFromObj(interp, objPtr, tablePtr)
11581158
* The answer isn't cached.
11591159
*/
11601160

1161-
name = Tcl_GetStringFromObj(objPtr, (int *) NULL);
1161+
name = Tcl_GetStringFromObj(objPtr, NULL);
11621162
bestPtr = GetOption(name, tablePtr);
11631163
if (bestPtr == NULL) {
11641164
goto error;

generic/tkFocus.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
* See the file "license.terms" for information on usage and redistribution
1111
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
1212
*
13-
* RCS: @(#) $Id: tkFocus.c,v 1.10 2002/10/08 19:57:59 hobbs Exp $
13+
* RCS: @(#) $Id: tkFocus.c,v 1.10.2.1 2005/08/11 12:17:09 dkf Exp $
1414
*/
1515

1616
#include "tkInt.h"
@@ -149,7 +149,7 @@ Tk_FocusObjCmd(clientData, interp, objc, objv)
149149
*/
150150

151151
if (objc == 2) {
152-
windowName = Tcl_GetStringFromObj(objv[1], (int *) NULL);
152+
windowName = Tcl_GetStringFromObj(objv[1], NULL);
153153

154154
/*
155155
* The empty string case exists for backwards compatibility.
@@ -180,7 +180,7 @@ Tk_FocusObjCmd(clientData, interp, objc, objv)
180180
}
181181
switch (index) {
182182
case 0: { /* -displayof */
183-
windowName = Tcl_GetStringFromObj(objv[2], (int *) NULL);
183+
windowName = Tcl_GetStringFromObj(objv[2], NULL);
184184
newPtr = (TkWindow *) Tk_NameToWindow(interp, windowName, tkwin);
185185
if (newPtr == NULL) {
186186
return TCL_ERROR;
@@ -192,7 +192,7 @@ Tk_FocusObjCmd(clientData, interp, objc, objv)
192192
break;
193193
}
194194
case 1: { /* -force */
195-
windowName = Tcl_GetStringFromObj(objv[2], (int *) NULL);
195+
windowName = Tcl_GetStringFromObj(objv[2], NULL);
196196

197197
/*
198198
* The empty string case exists for backwards compatibility.
@@ -209,7 +209,7 @@ Tk_FocusObjCmd(clientData, interp, objc, objv)
209209
break;
210210
}
211211
case 2: { /* -lastfor */
212-
windowName = Tcl_GetStringFromObj(objv[2], (int *) NULL);
212+
windowName = Tcl_GetStringFromObj(objv[2], NULL);
213213
newPtr = (TkWindow *) Tk_NameToWindow(interp, windowName, tkwin);
214214
if (newPtr == NULL) {
215215
return TCL_ERROR;

generic/tkFrame.c

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
* See the file "license.terms" for information on usage and redistribution
1313
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
1414
*
15-
* RCS: @(#) $Id: tkFrame.c,v 1.15.2.2 2005/07/28 04:57:37 hobbs Exp $
15+
* RCS: @(#) $Id: tkFrame.c,v 1.15.2.3 2005/08/11 12:17:09 dkf Exp $
1616
*/
1717

1818
#include "default.h"
@@ -485,8 +485,7 @@ CreateFrame(clientData, interp, objc, objv, type, appName)
485485
Tk_OptionTable optionTable;
486486
Tk_Window new;
487487
CONST char *className, *screenName, *visualName, *colormapName, *arg, *useOption;
488-
int i, c, depth;
489-
size_t length;
488+
int i, c, depth, length;
490489
unsigned int mask;
491490
Colormap colormap;
492491
Visual *visual;
@@ -513,25 +512,25 @@ CreateFrame(clientData, interp, objc, objv, type, appName)
513512
className = colormapName = screenName = visualName = useOption = NULL;
514513
colormap = None;
515514
for (i = 2; i < objc; i += 2) {
516-
arg = Tcl_GetStringFromObj(objv[i], (int *) &length);
515+
arg = Tcl_GetStringFromObj(objv[i], &length);
517516
if (length < 2) {
518517
continue;
519518
}
520519
c = arg[1];
521-
if ((c == 'c') && (strncmp(arg, "-class", length) == 0)
520+
if ((c == 'c') && (strncmp(arg, "-class", (unsigned) length) == 0)
522521
&& (length >= 3)) {
523522
className = Tcl_GetString(objv[i+1]);
524523
} else if ((c == 'c')
525-
&& (strncmp(arg, "-colormap", length) == 0)) {
524+
&& (strncmp(arg, "-colormap", (unsigned) length) == 0)) {
526525
colormapName = Tcl_GetString(objv[i+1]);
527526
} else if ((c == 's') && (type == TYPE_TOPLEVEL)
528-
&& (strncmp(arg, "-screen", length) == 0)) {
527+
&& (strncmp(arg, "-screen", (unsigned) length) == 0)) {
529528
screenName = Tcl_GetString(objv[i+1]);
530529
} else if ((c == 'u') && (type == TYPE_TOPLEVEL)
531-
&& (strncmp(arg, "-use", length) == 0)) {
530+
&& (strncmp(arg, "-use", (unsigned) length) == 0)) {
532531
useOption = Tcl_GetString(objv[i+1]);
533532
} else if ((c == 'v')
534-
&& (strncmp(arg, "-visual", length) == 0)) {
533+
&& (strncmp(arg, "-visual", (unsigned) length) == 0)) {
535534
visualName = Tcl_GetString(objv[i+1]);
536535
}
537536
}
@@ -735,8 +734,7 @@ FrameWidgetObjCmd(clientData, interp, objc, objv)
735734
};
736735
register Frame *framePtr = (Frame *) clientData;
737736
int result = TCL_OK, index;
738-
size_t length;
739-
int c, i;
737+
int c, i, length;
740738
Tcl_Obj *objPtr;
741739

742740
if (objc < 2) {
@@ -784,25 +782,26 @@ FrameWidgetObjCmd(clientData, interp, objc, objv)
784782
*/
785783

786784
for (i = 2; i < objc; i++) {
787-
char *arg = Tcl_GetStringFromObj(objv[i], (int *) &length);
785+
char *arg = Tcl_GetStringFromObj(objv[i], &length);
788786
if (length < 2) {
789787
continue;
790788
}
791789
c = arg[1];
792-
if (((c == 'c') && (strncmp(arg, "-class", length) == 0)
790+
if (((c == 'c')
791+
&& (strncmp(arg, "-class", (unsigned) length) == 0)
793792
&& (length >= 2))
794793
|| ((c == 'c')
795-
&& (strncmp(arg, "-colormap", length) == 0)
794+
&& (strncmp(arg, "-colormap", (unsigned) length) == 0)
796795
&& (length >= 3))
797796
|| ((c == 'c')
798-
&& (strncmp(arg, "-container", length) == 0)
797+
&& (strncmp(arg, "-container", (unsigned) length) == 0)
799798
&& (length >= 3))
800799
|| ((c == 's') && (framePtr->type == TYPE_TOPLEVEL)
801-
&& (strncmp(arg, "-screen", length) == 0))
800+
&& (strncmp(arg, "-screen", (unsigned) length) == 0))
802801
|| ((c == 'u') && (framePtr->type == TYPE_TOPLEVEL)
803-
&& (strncmp(arg, "-use", length) == 0))
802+
&& (strncmp(arg, "-use", (unsigned) length) == 0))
804803
|| ((c == 'v')
805-
&& (strncmp(arg, "-visual", length) == 0))) {
804+
&& (strncmp(arg, "-visual", (unsigned) length) ==0))) {
806805
Tcl_AppendResult(interp, "can't modify ", arg,
807806
" option after widget is created", (char *) NULL);
808807
result = TCL_ERROR;

generic/tkGrid.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
* See the file "license.terms" for information on usage and redistribution
99
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
1010
*
11-
* RCS: @(#) $Id: tkGrid.c,v 1.25.2.2 2005/01/11 10:46:39 dkf Exp $
11+
* RCS: @(#) $Id: tkGrid.c,v 1.25.2.3 2005/08/11 12:17:09 dkf Exp $
1212
*/
1313

1414
#include "tkInt.h"
@@ -2540,7 +2540,7 @@ ConfigureSlaves(interp, tkwin, objc, objv)
25402540
firstChar = 0;
25412541
for (numWindows = i = 0; i < objc; i++) {
25422542
prevChar = firstChar;
2543-
string = Tcl_GetStringFromObj(objv[i], (int *) &length);
2543+
string = Tcl_GetStringFromObj(objv[i], &length);
25442544
firstChar = string[0];
25452545

25462546
if (firstChar == '.') {

0 commit comments

Comments
 (0)