summaryrefslogtreecommitdiffstats
path: root/generic/tclBasic.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2022-03-10 15:47:28 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2022-03-10 15:47:28 (GMT)
commitcad30557e2355c12398782e9a39b4ebdecb3f5d5 (patch)
treeed8c7208b27df21eb1bbe8873654a914305bd663 /generic/tclBasic.c
parentb930863d81a04fae5e0e87303762437ce92b585a (diff)
parent0b39585b19e94e663d35f0618c748abfb37de5cd (diff)
downloadtcl-cad30557e2355c12398782e9a39b4ebdecb3f5d5.zip
tcl-cad30557e2355c12398782e9a39b4ebdecb3f5d5.tar.gz
tcl-cad30557e2355c12398782e9a39b4ebdecb3f5d5.tar.bz2
Revert previous commit (doesn't work) and merge 9.0
Diffstat (limited to 'generic/tclBasic.c')
-rw-r--r--generic/tclBasic.c37
1 files changed, 18 insertions, 19 deletions
diff --git a/generic/tclBasic.c b/generic/tclBasic.c
index 642f366..2e684e7 100644
--- a/generic/tclBasic.c
+++ b/generic/tclBasic.c
@@ -220,8 +220,8 @@ MODULE_SCOPE const TclStubs tclStubs;
#define CORO_ACTIVATE_YIELD PTR2INT(NULL)
#define CORO_ACTIVATE_YIELDM PTR2INT(NULL)+1
-#define COROUTINE_ARGUMENTS_SINGLE_OPTIONAL (-1)
-#define COROUTINE_ARGUMENTS_ARBITRARY (-2)
+#define COROUTINE_ARGUMENTS_SINGLE_OPTIONAL ((size_t)-1)
+#define COROUTINE_ARGUMENTS_ARBITRARY ((size_t)-2)
/*
* The following structure define the commands in the Tcl core.
@@ -3930,7 +3930,7 @@ TclInterpReady(
* probably because of an infinite loop somewhere.
*/
- if (((iPtr->numLevels) <= iPtr->maxNestingDepth)) {
+ if ((iPtr->numLevels <= iPtr->maxNestingDepth)) {
return TCL_OK;
}
@@ -6756,17 +6756,17 @@ Tcl_VarEval(
*----------------------------------------------------------------------
*/
-int
+size_t
Tcl_SetRecursionLimit(
Tcl_Interp *interp, /* Interpreter whose nesting limit is to be
* set. */
- int depth) /* New value for maximimum depth. */
+ size_t depth) /* New value for maximimum depth. */
{
Interp *iPtr = (Interp *) interp;
- int old;
+ size_t old;
old = iPtr->maxNestingDepth;
- if (depth > 0) {
+ if (depth + 1 > 1) {
iPtr->maxNestingDepth = depth;
}
return old;
@@ -8956,9 +8956,8 @@ TclNRCoroutineActivateCallback(
TCL_UNUSED(int) /*result*/)
{
CoroutineData *corPtr = (CoroutineData *)data[0];
- int type = PTR2INT(data[1]);
- int numLevels, unused;
- int *stackLevel = &unused;
+ int unused, type = PTR2INT(data[1]);
+ size_t numLevels;
if (!corPtr->stackLevel) {
/*
@@ -8975,7 +8974,7 @@ TclNRCoroutineActivateCallback(
* the interp's environment to make it suitable to run this coroutine.
*/
- corPtr->stackLevel = stackLevel;
+ corPtr->stackLevel = &unused;
numLevels = corPtr->auxNumLevels;
corPtr->auxNumLevels = iPtr->numLevels;
@@ -8989,7 +8988,7 @@ TclNRCoroutineActivateCallback(
* Coroutine is active: yield
*/
- if (corPtr->stackLevel != stackLevel) {
+ if (corPtr->stackLevel != &unused) {
NRE_callback *runPtr;
iPtr->execEnvPtr = corPtr->callerEEPtr;
@@ -9217,8 +9216,8 @@ TclNRCoroProbeObjCmd(
{
CoroutineData *corPtr;
ExecEnv *savedEEPtr = iPtr->execEnvPtr;
- int numLevels, unused;
- int *stackLevel = &unused;
+ size_t numLevels;
+ int unused;
/*
* Usage more or less like tailcall:
@@ -9268,7 +9267,7 @@ TclNRCoroProbeObjCmd(
* the interp's environment to make it suitable to run this coroutine.
*/
- corPtr->stackLevel = stackLevel;
+ corPtr->stackLevel = &unused;
numLevels = corPtr->auxNumLevels;
corPtr->auxNumLevels = iPtr->numLevels;
@@ -9313,7 +9312,7 @@ InjectHandler(
{
CoroutineData *corPtr = (CoroutineData *)data[0];
Tcl_Obj *listPtr = (Tcl_Obj *)data[1];
- int nargs = PTR2INT(data[2]);
+ size_t nargs = PTR2INT(data[2]);
void *isProbe = data[3];
size_t objc;
Tcl_Obj **objv;
@@ -9334,7 +9333,7 @@ InjectHandler(
* I don't think this is reachable...
*/
- Tcl_ListObjAppendElement(NULL, listPtr, Tcl_NewWideIntObj(nargs));
+ Tcl_ListObjAppendElement(NULL, listPtr, Tcl_NewWideIntObj((Tcl_WideInt)(nargs + 1U) - 1));
}
Tcl_ListObjAppendElement(NULL, listPtr, Tcl_GetObjResult(interp));
}
@@ -9359,7 +9358,7 @@ InjectHandlerPostCall(
{
CoroutineData *corPtr = (CoroutineData *)data[0];
Tcl_Obj *listPtr = (Tcl_Obj *)data[1];
- int nargs = PTR2INT(data[2]);
+ size_t nargs = PTR2INT(data[2]);
void *isProbe = data[3];
int numLevels;
@@ -9479,7 +9478,7 @@ TclNRInterpCoroutine(
}
break;
default:
- if (corPtr->nargs != objc-1) {
+ if (corPtr->nargs + 1 != (size_t)objc) {
Tcl_SetObjResult(interp,
Tcl_NewStringObj("wrong coro nargs; how did we get here? "
"not implemented!", -1));