aboutsummaryrefslogtreecommitdiff
path: root/graphics/tclblt/patches/pointertoint.patch
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/tclblt/patches/pointertoint.patch')
-rw-r--r--graphics/tclblt/patches/pointertoint.patch498
1 files changed, 498 insertions, 0 deletions
diff --git a/graphics/tclblt/patches/pointertoint.patch b/graphics/tclblt/patches/pointertoint.patch
new file mode 100644
index 0000000000..7f12465ca9
--- /dev/null
+++ b/graphics/tclblt/patches/pointertoint.patch
@@ -0,0 +1,498 @@
+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));
+ }
+