summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2022-01-28 16:45:11 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2022-01-28 16:45:11 (GMT)
commit7a979d7a9a53922375f02407d8ca44c602e8a033 (patch)
tree524d49ec4f7f9d214abb920ac44eb7884ad27cba
parentcc28c8d876973e1524abfd088a57c079ea1bdd63 (diff)
downloadtcl-7a979d7a9a53922375f02407d8ca44c602e8a033.zip
tcl-7a979d7a9a53922375f02407d8ca44c602e8a033.tar.gz
tcl-7a979d7a9a53922375f02407d8ca44c602e8a033.tar.bz2
Fix ParseArgsObjv() wrapper
-rw-r--r--generic/tclDecls.h2
-rw-r--r--generic/tclOOBasic.c2
-rw-r--r--generic/tclStubInit.c14
-rw-r--r--generic/tclTest.c12
-rw-r--r--win/tclWinDde.c3
-rw-r--r--win/tclWinReg.c2
6 files changed, 10 insertions, 25 deletions
diff --git a/generic/tclDecls.h b/generic/tclDecls.h
index 92efa47..596638c 100644
--- a/generic/tclDecls.h
+++ b/generic/tclDecls.h
@@ -3940,7 +3940,6 @@ extern const TclStubs *tclStubsPtr;
# define Tcl_UtfToWChar (sizeof(wchar_t) != sizeof(short) \
? (int (*)(const char *, wchar_t *))tclStubsPtr->tcl_UtfToChar16 \
: (int (*)(const char *, wchar_t *))Tcl_UtfToUniChar)
-#if 0
# undef Tcl_ListObjGetElements
# define Tcl_ListObjGetElements(interp, listPtr, objcPtr, objvPtr) (sizeof(*objcPtr) != sizeof(int) \
? tclStubsPtr->tcl_ListObjGetElements((interp), (listPtr), (size_t *)(void *)(objcPtr), (objvPtr)) \
@@ -3969,7 +3968,6 @@ extern const TclStubs *tclStubsPtr;
# define Tcl_ParseArgsObjv(interp, argTable, objcPtr, objv, remObjv) (sizeof(*objcPtr) != sizeof(int) \
? tclStubsPtr->tcl_ParseArgsObjv((interp), (argTable), (size_t *)(void *)(objcPtr), (objv), (remObjv)) \
: tclStubsPtr->tclParseArgsObjv_((interp), (argTable), (int *)(void *)(objcPtr), (objv), (remObjv)))
-#endif /* TCL_NO_DEPRECATED */
#else
# define Tcl_WCharToUtfDString (sizeof(wchar_t) != sizeof(short) \
? (char *(*)(const wchar_t *, size_t, Tcl_DString *))Tcl_UniCharToUtfDString \
diff --git a/generic/tclOOBasic.c b/generic/tclOOBasic.c
index 753474a..9573720 100644
--- a/generic/tclOOBasic.c
+++ b/generic/tclOOBasic.c
@@ -636,7 +636,7 @@ TclOO_Object_LinkVar(
Namespace *savedNsPtr;
int i;
- if (objc-Tcl_ObjectContextSkippedArgs(context) < 0) {
+ if ((size_t)objc < Tcl_ObjectContextSkippedArgs(context)) {
Tcl_WrongNumArgs(interp, Tcl_ObjectContextSkippedArgs(context), objv,
"?varName ...?");
return TCL_ERROR;
diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c
index 16d81fe..f41d89d 100644
--- a/generic/tclStubInit.c
+++ b/generic/tclStubInit.c
@@ -181,19 +181,9 @@ static Tcl_Obj *FSSplitPath(Tcl_Obj *pathPtr, int *lenPtr) {
static int ParseArgsObjv(Tcl_Interp *interp,
const Tcl_ArgvInfo *argTable, int *objcPtr, Tcl_Obj *const *objv,
Tcl_Obj ***remObjv) {
- size_t n = TCL_INDEX_NONE;
+ size_t n = (*objcPtr < 0) ? TCL_INDEX_NONE: (size_t)*objcPtr ;
int result = Tcl_ParseArgsObjv(interp, argTable, &n, objv, remObjv);
- if (objcPtr) {
- if ((result == TCL_OK) && (n > INT_MAX)) {
- if (interp) {
- Tcl_AppendResult(interp, "Too many args to be processed", NULL);
- }
- Tcl_Free(*remObjv);
- *remObjv = NULL;
- return TCL_ERROR;
- }
- *objcPtr = n;
- }
+ *objcPtr = (int)n;
return result;
}
diff --git a/generic/tclTest.c b/generic/tclTest.c
index 7a066fd..91239a9 100644
--- a/generic/tclTest.c
+++ b/generic/tclTest.c
@@ -440,8 +440,7 @@ Tcltest_Init(
Tcl_Interp *interp) /* Interpreter for application. */
{
Tcl_Obj **objv, *objPtr;
- size_t objc;
- int index;
+ int objc, index;
static const char *const specialOptions[] = {
"-appinitprocerror", "-appinitprocdeleteinterp",
"-appinitprocclosestderr", "-appinitprocsetrcfile", NULL
@@ -6790,7 +6789,7 @@ SimpleMatchInDirectory(
origPtr = SimpleRedirect(dirPtr);
res = Tcl_FSMatchInDirectory(interp, resPtr, origPtr, pattern, types);
if (res == TCL_OK) {
- size_t gLength, j;
+ int gLength, j;
Tcl_ListObjLength(NULL, resPtr, &gLength);
for (j = 0; j < gLength; j++) {
Tcl_Obj *gElt, *nElt;
@@ -7356,8 +7355,7 @@ TestconcatobjCmd(
TCL_UNUSED(const char **) /*argv*/)
{
Tcl_Obj *list1Ptr, *list2Ptr, *emptyPtr, *concatPtr, *tmpPtr;
- int result = TCL_OK;
- size_t len;
+ int result = TCL_OK, len;
Tcl_Obj *objv[3];
/*
@@ -7714,7 +7712,7 @@ TestparseargsCmd(
Tcl_Obj *const objv[]) /* Arguments. */
{
static int foo = 0;
- size_t count = objc;
+ int count = objc;
Tcl_Obj **remObjv, *result[3];
Tcl_ArgvInfo argTable[] = {
{TCL_ARGV_CONSTANT, "-bool", INT2PTR(1), &foo, "booltest", NULL},
@@ -7726,7 +7724,7 @@ TestparseargsCmd(
return TCL_ERROR;
}
result[0] = Tcl_NewIntObj(foo);
- result[1] = Tcl_NewWideIntObj((Tcl_WideUInt)(count + 1) - 1);
+ result[1] = Tcl_NewIntObj(count);
result[2] = Tcl_NewListObj(count, remObjv);
Tcl_SetObjResult(interp, Tcl_NewListObj(3, result));
Tcl_Free(remObjv);
diff --git a/win/tclWinDde.c b/win/tclWinDde.c
index 8398677..2570954 100644
--- a/win/tclWinDde.c
+++ b/win/tclWinDde.c
@@ -314,8 +314,7 @@ DdeSetServerName(
Tcl_DString dString;
const WCHAR *actualName;
Tcl_Obj *srvListPtr = NULL, **srvPtrPtr = NULL;
- size_t n, srvCount = 0;
- int lastSuffix, r = TCL_OK;
+ int n, srvCount = 0, lastSuffix, r = TCL_OK;
ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey);
/*
diff --git a/win/tclWinReg.c b/win/tclWinReg.c
index 0d048ca..998521c 100644
--- a/win/tclWinReg.c
+++ b/win/tclWinReg.c
@@ -1318,7 +1318,7 @@ SetValue(
(DWORD) type, (BYTE *) &value, sizeof(DWORD));
} else if (type == REG_MULTI_SZ) {
Tcl_DString data, buf;
- size_t objc, i;
+ int objc, i;
Tcl_Obj **objv;
if (Tcl_ListObjGetElements(interp, dataObj, &objc, &objv) != TCL_OK) {