slackbuilds/graphics/tclblt/patches/pointertoint.patch

499 lines
16 KiB
Diff

Description: Patch adds explicit casts to intptr_t or uintptr_t types
to prevent casting to/from pointer from/to integers of different size.
Author: Sergei Golovan
Last-Modified: Wed, 09 Jul 2014 19:20:07 +0400
--- a/generic/bltBgexec.c
+++ b/generic/bltBgexec.c
@@ -668,7 +668,7 @@
sinkPtr->name = name;
sinkPtr->echo = FALSE;
sinkPtr->fd = -1;
- sinkPtr->file = (Tcl_File)NULL;
+ sinkPtr->file = (Tcl_File)0;
sinkPtr->byteArr = sinkPtr->staticSpace;
sinkPtr->size = DEF_BUFFER_SIZE;
sinkPtr->encoding = encoding;
@@ -726,7 +726,7 @@
Blt_Free(sinkPtr->byteArr);
}
sinkPtr->fd = -1;
- sinkPtr->file = (Tcl_File)NULL;
+ sinkPtr->file = (Tcl_File)0;
#if (TCL_MAJOR_VERSION >= 8)
if (sinkPtr->objv != NULL) {
register int i;
@@ -883,7 +883,7 @@
#else
Tcl_DeleteFileHandler(sinkPtr->fd);
#endif
- sinkPtr->file = (Tcl_File)NULL;
+ sinkPtr->file = (Tcl_File)0;
sinkPtr->fd = -1;
#if WINDEBUG
--- a/generic/bltTree.c
+++ b/generic/bltTree.c
@@ -424,7 +424,7 @@
TreeDestroyValues(nodePtr);
UnlinkNode(nodePtr);
treeObjPtr->nNodes--;
- hPtr = Blt_FindHashEntry(&treeObjPtr->nodeTable, (char *)nodePtr->inode);
+ hPtr = Blt_FindHashEntry(&treeObjPtr->nodeTable, (char *)(intptr_t)nodePtr->inode);
assert(hPtr);
Blt_DeleteHashEntry(&treeObjPtr->nodeTable, hPtr);
nodePtr->inode = -1;
@@ -934,7 +934,7 @@
/* Generate an unique serial number for this node. */
do {
inode = treeObjPtr->nextInode++;
- hPtr = Blt_CreateHashEntry(&treeObjPtr->nodeTable,(char *)inode,
+ hPtr = Blt_CreateHashEntry(&treeObjPtr->nodeTable,(char *)(intptr_t)inode,
&isNew);
} while (!isNew);
nodePtr = NewNode(treeObjPtr, name, inode);
@@ -1030,7 +1030,7 @@
int isNew, result;
treeObjPtr = parentPtr->treeObject;
- hPtr = Blt_CreateHashEntry(&treeObjPtr->nodeTable,(char *)inode, &isNew);
+ hPtr = Blt_CreateHashEntry(&treeObjPtr->nodeTable,(char *)(intptr_t)inode, &isNew);
if (!isNew) {
return NULL;
}
@@ -1166,7 +1166,7 @@
TreeObject *treeObjPtr = clientPtr->treeObject;
Blt_HashEntry *hPtr;
- hPtr = Blt_FindHashEntry(&treeObjPtr->nodeTable, (char *)inode);
+ hPtr = Blt_FindHashEntry(&treeObjPtr->nodeTable, (char *)(intptr_t)inode);
if (hPtr != NULL) {
return (Blt_TreeNode)Blt_GetHashValue(hPtr);
}
@@ -1179,7 +1179,7 @@
{
Blt_HashEntry *hPtr;
- hPtr = Blt_FindHashEntry(&treeObjPtr->nodeTable, (char *)inode);
+ hPtr = Blt_FindHashEntry(&treeObjPtr->nodeTable, (char *)(intptr_t)inode);
if (hPtr != NULL) {
return (Node*)Blt_GetHashValue(hPtr);
}
--- a/generic/bltTreeCmd.c
+++ b/generic/bltTreeCmd.c
@@ -1641,7 +1641,7 @@
if (parentId == -1) { /* Dump marks root's parent as -1. */
node = dataPtr->root;
/* Create a mapping between the old id and the new node */
- hPtr = Blt_CreateHashEntry(&dataPtr->idTable, (char *)nodeId,
+ hPtr = Blt_CreateHashEntry(&dataPtr->idTable, (char *)(intptr_t)nodeId,
&isNew);
Blt_SetHashValue(hPtr, node);
Blt_TreeRelabelNode(cmdPtr->tree, node, names[0]);
@@ -1651,7 +1651,7 @@
* This can happen when there's a id collision with an
* existing node.
*/
- hPtr = Blt_FindHashEntry(&dataPtr->idTable, (char *)parentId);
+ hPtr = Blt_FindHashEntry(&dataPtr->idTable, (char *)(intptr_t)parentId);
if (hPtr != NULL) {
parent = Blt_GetHashValue(hPtr);
} else {
@@ -1688,7 +1688,7 @@
if (dataPtr->flags & RESTORE_OVERWRITE &&
((node = Blt_TreeFindChild(parent, names[nNames - 1])))) {
/* Create a mapping between the old id and the new node */
- hPtr = Blt_CreateHashEntry(&dataPtr->idTable, (char *)nodeId,
+ hPtr = Blt_CreateHashEntry(&dataPtr->idTable, (char *)(intptr_t)nodeId,
&isNew);
Blt_SetHashValue(hPtr, node);
}
@@ -1698,7 +1698,7 @@
node = Blt_TreeCreateNode(cmdPtr->tree, parent,
names[nNames - 1], -1);
/* Create a mapping between the old id and the new node */
- hPtr = Blt_CreateHashEntry(&dataPtr->idTable, (char *)nodeId,
+ hPtr = Blt_CreateHashEntry(&dataPtr->idTable, (char *)(intptr_t)nodeId,
&isNew);
Blt_SetHashValue(hPtr, node);
} else {
@@ -2196,7 +2196,7 @@
for (node = Blt_ListFirstNode(patternList); node != NULL;
node = Blt_ListNextNode(node)) {
- type = (int)Blt_ListGetValue(node);
+ type = (intptr_t)Blt_ListGetValue(node);
pattern = (char *)Blt_ListGetKey(node);
switch (type) {
case 0:
@@ -3654,7 +3654,7 @@
for (hPtr = Blt_FirstHashEntry(tablePtr, &cursor);
hPtr != NULL; hPtr = Blt_NextHashEntry(&cursor)) {
node = Blt_GetHashValue(hPtr);
- Blt_ChainAppend(chainPtr, (ClientData)Blt_TreeNodeId(node));
+ Blt_ChainAppend(chainPtr, (ClientData)(intptr_t)Blt_TreeNodeId(node));
}
/*
* Iterate through this list to delete the nodes. By
@@ -3664,7 +3664,7 @@
for (linkPtr = Blt_ChainFirstLink(chainPtr); linkPtr != NULL;
linkPtr = nextPtr) {
nextPtr = Blt_ChainNextLink(linkPtr);
- inode = (int)Blt_ChainGetValue(linkPtr);
+ inode = (intptr_t)Blt_ChainGetValue(linkPtr);
node = Blt_TreeGetNode(cmdPtr->tree, inode);
if (node != NULL) {
DeleteNode(cmdPtr, node);
--- a/generic/bltUnixPipe.c
+++ b/generic/bltUnixPipe.c
@@ -508,7 +508,7 @@
* Reap the child process now if an error occurred during its
* startup.
*/
- Tcl_WaitPid((Tcl_Pid)pid, &status, WNOHANG);
+ Tcl_WaitPid((Tcl_Pid)(intptr_t)pid, &status, WNOHANG);
}
if (errPipeIn >= 0) {
CloseFile(errPipeIn);
--- a/generic/bltUtil.c
+++ b/generic/bltUtil.c
@@ -827,10 +827,10 @@
if (isNew) {
refCount = 0;
} else {
- refCount = (int)Blt_GetHashValue(hPtr);
+ refCount = (intptr_t)Blt_GetHashValue(hPtr);
}
refCount++;
- Blt_SetHashValue(hPtr, (ClientData)refCount);
+ Blt_SetHashValue(hPtr, (intptr_t)refCount);
return (Blt_Uid)Blt_GetHashKey(&uidTable, hPtr);
}
@@ -864,12 +864,12 @@
if (hPtr) {
int refCount;
- refCount = (int)Blt_GetHashValue(hPtr);
+ refCount = (intptr_t)Blt_GetHashValue(hPtr);
refCount--;
if (refCount == 0) {
Blt_DeleteHashEntry(&uidTable, hPtr);
} else {
- Blt_SetHashValue(hPtr, (ClientData)refCount);
+ Blt_SetHashValue(hPtr, (intptr_t)refCount);
}
} else {
fprintf(stderr, "tried to release unknown identifier \"%s\"\n", uid);
--- a/generic/bltInit.c
+++ b/generic/bltInit.c
@@ -514,7 +514,7 @@
int dostub = 0;
#endif
- flags = (int)Tcl_GetAssocData(interp, BLT_THREAD_KEY, NULL);
+ flags = (intptr_t)Tcl_GetAssocData(interp, BLT_THREAD_KEY, NULL);
if ((flags & BLT_TCL_CMDS) == 0) {
register Tcl_AppInitProc **p;
Tcl_Namespace *nsPtr;
@@ -573,7 +573,7 @@
}
#endif
Tcl_SetAssocData(interp, BLT_THREAD_KEY, NULL,
- (ClientData)(flags | BLT_TCL_CMDS));
+ (ClientData)(intptr_t)(flags | BLT_TCL_CMDS));
}
#ifndef TCL_ONLY
if ((flags & BLT_TK_CMDS) == 0) {
@@ -609,7 +609,7 @@
}
Blt_InitEpsCanvasItem(interp);
Tcl_SetAssocData(interp, BLT_THREAD_KEY, NULL,
- (ClientData)(flags | BLT_TK_CMDS));
+ (ClientData)(intptr_t)(flags | BLT_TK_CMDS));
}
#endif
return TCL_OK;
--- a/generic/bltGrAxis.c
+++ b/generic/bltGrAxis.c
@@ -669,7 +669,7 @@
char *widgRec; /* Pointer to structure record. */
int offset; /* Offset of field in structure. */
{
- unsigned int mask = (unsigned int)clientData;
+ unsigned int mask = (uintptr_t)clientData;
Axis *axisPtr = (Axis *)widgRec;
Ticks **ticksPtrPtr = (Ticks **) (widgRec + offset);
int nTicks;
@@ -3687,7 +3687,7 @@
int margin;
/* TODO: fix bug where "$g xaxis x2" leaves x unavailable. */
- margin = (int)argv[-1];
+ margin = (intptr_t)argv[-1];
chainPtr = graphPtr->margins[margin].axes;
if (argc == 0) {
for (linkPtr = Blt_ChainFirstLink(chainPtr); linkPtr!= NULL;
@@ -4231,7 +4231,7 @@
return TCL_ERROR;
}
if (proc == UseOp) {
- argv[2] = (char *)margin; /* Hack. Slide a reference to the margin in
+ argv[2] = (char *)(intptr_t)margin; /* Hack. Slide a reference to the margin in
* the argument list. Needed only for UseOp.
*/
result = (*proc)(graphPtr, NULL, argc - 3, argv +3);
--- a/generic/bltGrBar.c
+++ b/generic/bltGrBar.c
@@ -2197,13 +2197,13 @@
if (isNew) {
count = 1;
} else {
- count = (int)Blt_GetHashValue(hPtr);
+ count = (intptr_t)Blt_GetHashValue(hPtr);
if (count == 1) {
nStacks++;
}
count++;
}
- Blt_SetHashValue(hPtr, (ClientData)count);
+ Blt_SetHashValue(hPtr, (ClientData)(intptr_t)count);
}
}
if (nSegs == 0) {
@@ -2219,12 +2219,12 @@
infoPtr = graphPtr->freqArr;
for (hPtr = Blt_FirstHashEntry(&freqTable, &cursor); hPtr != NULL;
hPtr = Blt_NextHashEntry(&cursor)) {
- count = (int)Blt_GetHashValue(hPtr);
+ count = (intptr_t)Blt_GetHashValue(hPtr);
keyPtr = (FreqKey *)Blt_GetHashKey(&freqTable, hPtr);
if (count > 1) {
h2Ptr = Blt_CreateHashEntry(&(graphPtr->freqTable),
(char *)keyPtr, &isNew);
- count = (int)Blt_GetHashValue(hPtr);
+ count = (intptr_t)Blt_GetHashValue(hPtr);
infoPtr->freq = count;
infoPtr->axes = keyPtr->axes;
Blt_SetHashValue(h2Ptr, infoPtr);
--- a/generic/bltGrMisc.c
+++ b/generic/bltGrMisc.c
@@ -260,7 +260,7 @@
{
ColorPair *pairPtr = (ColorPair *)(widgRec + offset);
ColorPair sample;
- int allowDefault = (int)clientData;
+ int allowDefault = (intptr_t)clientData;
sample.fgColor = sample.bgColor = NULL;
if ((string != NULL) && (*string != '\0')) {
--- a/generic/bltConfig.c
+++ b/generic/bltConfig.c
@@ -442,7 +442,7 @@
char *widgRec; /* Cubicle structure record */
int offset; /* Offset of style in record */
{
- unsigned int mask = (unsigned int)clientData; /* Bit to be tested */
+ unsigned int mask = (uintptr_t)clientData; /* Bit to be tested */
int *flagPtr = (int *)(widgRec + offset);
int bool;
@@ -478,7 +478,7 @@
int offset; /* Offset of fill in widget record */
Tcl_FreeProc **freeProcPtr; /* Not Used. */
{
- unsigned int mask = (unsigned int)clientData; /* Bit to be tested */
+ unsigned int mask = (uintptr_t)clientData; /* Bit to be tested */
unsigned int bool = *(unsigned int *)(widgRec + offset);
return (bool & mask) ? "1" : "0";
@@ -559,7 +559,7 @@
int offset; /* Offset of pixel size in record */
{
int *valuePtr = (int *)(widgRec + offset);
- return Blt_GetPixels(interp, tkwin, string, (int)clientData, valuePtr);
+ return Blt_GetPixels(interp, tkwin, string, (intptr_t)clientData, valuePtr);
}
/*
@@ -648,7 +648,7 @@
int offset; /* Offset of pixel size in record */
{
int *valuePtr = (int *)(widgRec + offset);
- return Blt_GetInt(interp, string, (int)clientData, valuePtr);
+ return Blt_GetInt(interp, string, (intptr_t)clientData, valuePtr);
}
/*
--- a/generic/bltContainer.c
+++ b/generic/bltContainer.c
@@ -822,7 +822,7 @@
char *widgRec; /* Widget record */
int offset; /* Offset to field in structure */
{
- unsigned int flags = (int)clientData;
+ unsigned int flags = (uintptr_t)clientData;
Container *cntrPtr = (Container *)widgRec;
Window *winPtr = (Window *) (widgRec + offset);
Tk_Window tkAdopted;
--- a/generic/bltHierbox.c
+++ b/generic/bltHierbox.c
@@ -2077,7 +2077,7 @@
/* Generate a unique node serial number. */
do {
serial = hboxPtr->nextSerial++;
- hPtr = Blt_CreateHashEntry(&(hboxPtr->nodeTable), (char *)serial,
+ hPtr = Blt_CreateHashEntry(&(hboxPtr->nodeTable), (char *)(intptr_t)serial,
&isNew);
} while (!isNew);
Blt_SetHashValue(hPtr, treePtr);
@@ -2372,7 +2372,7 @@
if (Tcl_GetInt(NULL, string, &serial) == TCL_OK) {
Blt_HashEntry *hPtr;
- hPtr = Blt_FindHashEntry(&(hboxPtr->nodeTable), (char *)serial);
+ hPtr = Blt_FindHashEntry(&(hboxPtr->nodeTable), (char *)(intptr_t)serial);
if (hPtr != NULL) {
return (Tree *) Blt_GetHashValue(hPtr);
}
@@ -2406,7 +2406,7 @@
int serial;
/* Node table keys are integers. Convert them to strings. */
- serial = (int)Blt_GetHashKey(&(hboxPtr->nodeTable),
+ serial = (intptr_t)Blt_GetHashKey(&(hboxPtr->nodeTable),
nodePtr->entryPtr->hashPtr);
sprintf(string, "%d", serial);
--- a/generic/bltUnixImage.c
+++ b/generic/bltUnixImage.c
@@ -574,7 +574,7 @@
destPtr = Blt_ColorImageBits(image);
endPtr = destPtr + nPixels;
for (/* empty */; destPtr < endPtr; destPtr++) {
- hPtr = Blt_FindHashEntry(&pixelTable, (char *)destPtr->value);
+ hPtr = Blt_FindHashEntry(&pixelTable, (char *)(intptr_t)destPtr->value);
colorPtr = (XColor *)Blt_GetHashValue(hPtr);
destPtr->Red = lut[colorPtr->red >> 8];
destPtr->Green = lut[colorPtr->green >> 8];
--- a/generic/bltTable.c
+++ b/generic/bltTable.c
@@ -2034,7 +2034,7 @@
key = 0; /* Initialize key to bogus span */
for (node = Blt_ListFirstNode(list); node != NULL;
node = Blt_ListNextNode(node)) {
- key = (int)Blt_ListGetKey(node);
+ key = (intptr_t)Blt_ListGetKey(node);
if (entryPtr->row.span <= key) {
break;
}
@@ -2046,7 +2046,7 @@
* Create a new list (bucket) to hold entries of that size
* span and and link it into the list of buckets.
*/
- newNode = Blt_ListCreateNode(list, (char *)entryPtr->row.span);
+ newNode = Blt_ListCreateNode(list, (char *)(intptr_t)entryPtr->row.span);
Blt_ListSetValue(newNode, (char *)Blt_ChainCreate());
Blt_ListLinkBefore(list, newNode, node);
node = newNode;
@@ -2063,7 +2063,7 @@
key = 0;
for (node = Blt_ListFirstNode(list); node != NULL;
node = Blt_ListNextNode(node)) {
- key = (int)Blt_ListGetKey(node);
+ key = (intptr_t)Blt_ListGetKey(node);
if (entryPtr->column.span <= key) {
break;
}
@@ -2075,7 +2075,7 @@
* Create a new list (bucket) to hold entries of that size
* span and and link it into the list of buckets.
*/
- newNode = Blt_ListCreateNode(list, (char *)entryPtr->column.span);
+ newNode = Blt_ListCreateNode(list, (char *)(intptr_t)entryPtr->column.span);
Blt_ListSetValue(newNode, (char *)Blt_ChainCreate());
Blt_ListLinkBefore(list, newNode, node);
node = newNode;
--- a/generic/bltTreeView.c
+++ b/generic/bltTreeView.c
@@ -1314,10 +1314,10 @@
if (isNew) {
refCount = 1;
} else {
- refCount = (int)Blt_GetHashValue(hPtr);
+ refCount = (intptr_t)Blt_GetHashValue(hPtr);
refCount++;
}
- Blt_SetHashValue(hPtr, (ClientData)refCount);
+ Blt_SetHashValue(hPtr, (ClientData)(intptr_t)refCount);
return Blt_GetHashKey(&tvPtr->uidTable, hPtr);
}
@@ -1343,10 +1343,10 @@
hPtr = Blt_FindHashEntry(&tvPtr->uidTable, uid);
assert(hPtr != NULL);
- refCount = (int)Blt_GetHashValue(hPtr);
+ refCount = (intptr_t)Blt_GetHashValue(hPtr);
refCount--;
if (refCount > 0) {
- Blt_SetHashValue(hPtr, (ClientData)refCount);
+ Blt_SetHashValue(hPtr, (ClientData)(intptr_t)refCount);
} else {
Blt_DeleteHashEntry(&tvPtr->uidTable, hPtr);
}
--- a/generic/bltTreeViewCmd.c
+++ b/generic/bltTreeViewCmd.c
@@ -516,7 +516,7 @@
if ((context == ITEM_ENTRY) ||
(context == ITEM_ENTRY_BUTTON) ||
- ((unsigned int)context >= (unsigned int)ITEM_STYLE)) {
+ ((uintptr_t)context >= (uintptr_t)ITEM_STYLE)) {
entryPtr = Blt_GetCurrentItem(tvPtr->bindTable);
}
}
--- a/generic/bltWinop.c
+++ b/generic/bltWinop.c
@@ -980,9 +980,9 @@
if (isNew) {
Blt_SetHashValue(hPtr, 1);
} else {
- cnt = (int)Blt_GetHashValue(hPtr);
+ cnt = (intptr_t)Blt_GetHashValue(hPtr);
cnt++;
- Blt_SetHashValue(hPtr, cnt);
+ Blt_SetHashValue(hPtr, (intptr_t)cnt);
}
srcPtr++;
}
@@ -994,7 +994,7 @@
Tcl_Obj *objPtr = Tcl_NewStringObj(Blt_GetHashKey(&hTbl, hPtr), -1);
Tcl_ListObjAppendElement(interp, listPtr, objPtr);
if (iscnt) {
- cnt = (int)Blt_GetHashValue(hPtr);
+ cnt = (intptr_t)Blt_GetHashValue(hPtr);
sprintf(buf, "%d", cnt);
objPtr = Tcl_NewStringObj(buf, -1);
Tcl_ListObjAppendElement(interp, listPtr, objPtr);
--- a/generic/bltObjConfig.c
+++ b/generic/bltObjConfig.c
@@ -1338,7 +1338,7 @@
if (Tcl_GetBooleanFromObj(interp, objPtr, &bool) != TCL_OK) {
return TCL_ERROR;
}
- flag = (unsigned int)specPtr->customPtr;
+ flag = (uintptr_t)specPtr->customPtr;
*(int *)ptr &= ~flag;
if (bool) {
*(int *)ptr |= flag;
@@ -1639,7 +1639,7 @@
{
unsigned int flag;
- flag = (*(int *)ptr) & (unsigned int)specPtr->customPtr;
+ flag = (*(unsigned int *)ptr) & (uintptr_t)specPtr->customPtr;
return Tcl_NewBooleanObj((flag != 0));
}