summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2022-04-08 12:46:35 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2022-04-08 12:46:35 (GMT)
commitce8fc8dc1e031e8dd27cd9196f299ecb1e21317f (patch)
tree1d432a9ec1165247f356d36000f9909aa06de6ef
parent82a4b8a569583a68f0c54c9f31321412cf06d709 (diff)
parentecd8e8bce1ae18281cf79ca447cbafe017127afb (diff)
downloadtcl-ce8fc8dc1e031e8dd27cd9196f299ecb1e21317f.zip
tcl-ce8fc8dc1e031e8dd27cd9196f299ecb1e21317f.tar.gz
tcl-ce8fc8dc1e031e8dd27cd9196f299ecb1e21317f.tar.bz2
Merge 8.7. Fix some indexObj testcases on 32-bit systems
-rw-r--r--generic/tclTest.c3
-rw-r--r--generic/tclThreadTest.c10
2 files changed, 7 insertions, 6 deletions
diff --git a/generic/tclTest.c b/generic/tclTest.c
index f1b95b6..1e769af 100644
--- a/generic/tclTest.c
+++ b/generic/tclTest.c
@@ -7158,7 +7158,8 @@ TestGetIntForIndexCmd(
if (Tcl_GetIntForIndex(interp, objv[1], endvalue, &result) != TCL_OK) {
return TCL_ERROR;
}
- Tcl_SetObjResult(interp, Tcl_NewWideIntObj(result));
+ /* Make sure that (size_t)-2 is output as "-2" and (size_t)-3 as "-3", even for 32-bit */
+ Tcl_SetObjResult(interp, Tcl_NewWideIntObj((Tcl_WideInt)((Tcl_WideUInt)(result + 3U)) - 3));
return TCL_OK;
}
diff --git a/generic/tclThreadTest.c b/generic/tclThreadTest.c
index f440ec0..c53a193 100644
--- a/generic/tclThreadTest.c
+++ b/generic/tclThreadTest.c
@@ -271,7 +271,7 @@ ThreadObjCmd(
} else {
result = NULL;
}
- return ThreadCancel(interp, (Tcl_ThreadId) (size_t) id, result, flags);
+ return ThreadCancel(interp, (Tcl_ThreadId) INT2PTR(id), result, flags);
}
case THREAD_CREATE: {
const char *script;
@@ -335,11 +335,11 @@ ThreadObjCmd(
*/
if (objc == 2) {
- idObj = Tcl_NewWideIntObj((Tcl_WideInt)(size_t)Tcl_GetCurrentThread());
+ idObj = Tcl_NewWideIntObj((Tcl_WideInt)PTR2INT(Tcl_GetCurrentThread()));
} else if (objc == 3
&& strcmp("-main", Tcl_GetString(objv[2])) == 0) {
Tcl_MutexLock(&threadMutex);
- idObj = Tcl_NewWideIntObj((Tcl_WideInt)(size_t)mainThreadId);
+ idObj = Tcl_NewWideIntObj((Tcl_WideInt)PTR2INT(mainThreadId));
Tcl_MutexUnlock(&threadMutex);
} else {
Tcl_WrongNumArgs(interp, 2, objv, NULL);
@@ -364,7 +364,7 @@ ThreadObjCmd(
return TCL_ERROR;
}
- result = Tcl_JoinThread((Tcl_ThreadId)(size_t)id, &status);
+ result = Tcl_JoinThread((Tcl_ThreadId)INT2PTR(id), &status);
if (result == TCL_OK) {
Tcl_SetIntObj(Tcl_GetObjResult(interp), status);
} else {
@@ -406,7 +406,7 @@ ThreadObjCmd(
}
arg++;
script = Tcl_GetString(objv[arg]);
- return ThreadSend(interp, (Tcl_ThreadId)(size_t)id, script, wait);
+ return ThreadSend(interp, (Tcl_ThreadId)INT2PTR(id), script, wait);
}
case THREAD_EVENT: {
if (objc > 2) {