summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorapnadkarni <apnmbx-wits@yahoo.com>2023-03-30 18:01:48 (GMT)
committerapnadkarni <apnmbx-wits@yahoo.com>2023-03-30 18:01:48 (GMT)
commit5a1359a5e8aa149cea117f4f34239cd3a23872f4 (patch)
tree85a0e53462d5b6da6b74451e0c3f9d59004369ed /generic
parentedb3e7b8d2efcb3a1282f910f1e7120d5d34c6f8 (diff)
downloadtcl-5a1359a5e8aa149cea117f4f34239cd3a23872f4.zip
tcl-5a1359a5e8aa149cea117f4f34239cd3a23872f4.tar.gz
tcl-5a1359a5e8aa149cea117f4f34239cd3a23872f4.tar.bz2
TIP 660. No compiler warnings. Tests suite pass on Win and Ubuntu
Diffstat (limited to 'generic')
-rw-r--r--generic/tcl.decls22
-rw-r--r--generic/tcl.h29
-rwxr-xr-xgeneric/tclArithSeries.c6
-rw-r--r--generic/tclArithSeries.h4
-rw-r--r--generic/tclAssembly.c64
-rw-r--r--generic/tclBasic.c180
-rw-r--r--generic/tclBinary.c139
-rw-r--r--generic/tclCkalloc.c2
-rw-r--r--generic/tclClock.c24
-rw-r--r--generic/tclCmdAH.c20
-rw-r--r--generic/tclCmdIL.c186
-rw-r--r--generic/tclCmdMZ.c228
-rw-r--r--generic/tclCompCmds.c64
-rw-r--r--generic/tclCompCmdsGR.c4
-rw-r--r--generic/tclCompCmdsSZ.c50
-rw-r--r--generic/tclCompExpr.c52
-rw-r--r--generic/tclCompile.c86
-rw-r--r--generic/tclCompile.h22
-rw-r--r--generic/tclConfig.c14
-rw-r--r--generic/tclDecls.h94
-rw-r--r--generic/tclDictObj.c52
-rw-r--r--generic/tclDisassemble.c126
-rw-r--r--generic/tclEncoding.c10
-rw-r--r--generic/tclEnsemble.c148
-rw-r--r--generic/tclEnv.c20
-rw-r--r--generic/tclEvent.c36
-rw-r--r--generic/tclExecute.c138
-rw-r--r--generic/tclFCmd.c12
-rw-r--r--generic/tclFileName.c70
-rw-r--r--generic/tclFileSystem.h8
-rw-r--r--generic/tclHash.c4
-rw-r--r--generic/tclHistory.c2
-rw-r--r--generic/tclIO.c52
-rw-r--r--generic/tclIOCmd.c12
-rw-r--r--generic/tclIOGT.c6
-rw-r--r--generic/tclIORChan.c38
-rw-r--r--generic/tclIORTrans.c8
-rw-r--r--generic/tclIOSock.c4
-rw-r--r--generic/tclIOUtil.c40
-rw-r--r--generic/tclIndexObj.c67
-rw-r--r--generic/tclInt.decls6
-rw-r--r--generic/tclInt.h177
-rw-r--r--generic/tclIntDecls.h8
-rw-r--r--generic/tclInterp.c104
-rw-r--r--generic/tclLink.c22
-rw-r--r--generic/tclListObj.c38
-rw-r--r--generic/tclLiteral.c33
-rw-r--r--generic/tclLoad.c28
-rw-r--r--generic/tclLoadNone.c2
-rw-r--r--generic/tclMain.c20
-rw-r--r--generic/tclNamesp.c74
-rw-r--r--generic/tclOO.c48
-rw-r--r--generic/tclOO.decls14
-rw-r--r--generic/tclOOBasic.c62
-rw-r--r--generic/tclOOCall.c32
-rw-r--r--generic/tclOODecls.h16
-rw-r--r--generic/tclOODefineCmds.c148
-rw-r--r--generic/tclOOInfo.c60
-rw-r--r--generic/tclOOInt.h20
-rw-r--r--generic/tclOOIntDecls.h8
-rw-r--r--generic/tclOOMethod.c28
-rw-r--r--generic/tclObj.c34
-rw-r--r--generic/tclOptimize.c2
-rw-r--r--generic/tclParse.c106
-rw-r--r--generic/tclPathObj.c20
-rw-r--r--generic/tclPipe.c38
-rw-r--r--generic/tclPkg.c28
-rw-r--r--generic/tclProc.c30
-rw-r--r--generic/tclProcess.c36
-rw-r--r--generic/tclRegexp.c30
-rw-r--r--generic/tclResult.c14
-rw-r--r--generic/tclScan.c22
-rw-r--r--generic/tclStrToD.c12
-rw-r--r--generic/tclStringObj.c403
-rw-r--r--generic/tclStringRep.h4
-rw-r--r--generic/tclStubInit.c18
-rw-r--r--generic/tclTest.c92
-rw-r--r--generic/tclTestObj.c42
-rw-r--r--generic/tclThread.c2
-rw-r--r--generic/tclThreadTest.c8
-rw-r--r--generic/tclTimer.c2
-rw-r--r--generic/tclUtf.c96
-rw-r--r--generic/tclUtil.c442
-rw-r--r--generic/tclVar.c66
-rw-r--r--generic/tclZipfs.c83
-rw-r--r--generic/tclZlib.c80
86 files changed, 2523 insertions, 2278 deletions
diff --git a/generic/tcl.decls b/generic/tcl.decls
index e50e3de..e01bdd9 100644
--- a/generic/tcl.decls
+++ b/generic/tcl.decls
@@ -2472,19 +2472,19 @@ declare 649 {
}
declare 650 {
unsigned char *Tcl_GetBytesFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr,
- size_t *numBytesPtr)
+ Tcl_Size *numBytesPtr)
}
# TIP #481
declare 651 {
- char *Tcl_GetStringFromObj(Tcl_Obj *objPtr, size_t *lengthPtr)
+ char *Tcl_GetStringFromObj(Tcl_Obj *objPtr, Tcl_Size *lengthPtr)
}
declare 652 {
- Tcl_UniChar *Tcl_GetUnicodeFromObj(Tcl_Obj *objPtr, size_t *lengthPtr)
+ Tcl_UniChar *Tcl_GetUnicodeFromObj(Tcl_Obj *objPtr, Tcl_Size *lengthPtr)
}
# Only available in Tcl 8.x, NULL in Tcl 9.0
declare 653 {
- unsigned char *Tcl_GetByteArrayFromObj(Tcl_Obj *objPtr, size_t *numBytesPtr)
+ unsigned char *Tcl_GetByteArrayFromObj(Tcl_Obj *objPtr, Tcl_Size *numBytesPtr)
}
# TIP #575
@@ -2521,28 +2521,28 @@ declare 660 {
# TIP #616
declare 661 {
int Tcl_ListObjGetElements(Tcl_Interp *interp, Tcl_Obj *listPtr,
- size_t *objcPtr, Tcl_Obj ***objvPtr)
+ Tcl_Size *objcPtr, Tcl_Obj ***objvPtr)
}
declare 662 {
int Tcl_ListObjLength(Tcl_Interp *interp, Tcl_Obj *listPtr,
- size_t *lengthPtr)
+ Tcl_Size *lengthPtr)
}
declare 663 {
- int Tcl_DictObjSize(Tcl_Interp *interp, Tcl_Obj *dictPtr, size_t *sizePtr)
+ int Tcl_DictObjSize(Tcl_Interp *interp, Tcl_Obj *dictPtr, Tcl_Size *sizePtr)
}
declare 664 {
- int Tcl_SplitList(Tcl_Interp *interp, const char *listStr, size_t *argcPtr,
+ int Tcl_SplitList(Tcl_Interp *interp, const char *listStr, Tcl_Size *argcPtr,
const char ***argvPtr)
}
declare 665 {
- void Tcl_SplitPath(const char *path, size_t *argcPtr, const char ***argvPtr)
+ void Tcl_SplitPath(const char *path, Tcl_Size *argcPtr, const char ***argvPtr)
}
declare 666 {
- Tcl_Obj *Tcl_FSSplitPath(Tcl_Obj *pathPtr, size_t *lenPtr)
+ Tcl_Obj *Tcl_FSSplitPath(Tcl_Obj *pathPtr, Tcl_Size *lenPtr)
}
declare 667 {
int Tcl_ParseArgsObjv(Tcl_Interp *interp, const Tcl_ArgvInfo *argTable,
- size_t *objcPtr, Tcl_Obj *const *objv, Tcl_Obj ***remObjv)
+ Tcl_Size *objcPtr, Tcl_Obj *const *objv, Tcl_Obj ***remObjv)
}
# TIP #617
diff --git a/generic/tcl.h b/generic/tcl.h
index 874d75f..6dacbd9 100644
--- a/generic/tcl.h
+++ b/generic/tcl.h
@@ -306,27 +306,40 @@ typedef unsigned TCL_WIDE_INT_TYPE Tcl_WideUInt;
# define TCL_Z_MODIFIER ""
# endif
#endif /* !TCL_Z_MODIFIER */
+#ifndef TCL_T_MODIFIER
+# if defined(__GNUC__) && !defined(_WIN32)
+# define TCL_T_MODIFIER "t"
+# elif defined(_WIN64)
+# define TCL_T_MODIFIER TCL_LL_MODIFIER
+# else
+# define TCL_T_MODIFIER TCL_Z_MODIFIER
+# endif
+#endif /* !TCL_T_MODIFIER */
#define Tcl_WideAsLong(val) ((long)((Tcl_WideInt)(val)))
#define Tcl_LongAsWide(val) ((Tcl_WideInt)((long)(val)))
#define Tcl_WideAsDouble(val) ((double)((Tcl_WideInt)(val)))
#define Tcl_DoubleAsWide(val) ((Tcl_WideInt)((double)(val)))
#if TCL_MAJOR_VERSION < 9
-typedef int Tcl_Size;
+ typedef int Tcl_Size;
+# define TCL_SIZE_MODIFIER ""
+# define TCL_SIZE_MAX INT_MAX
#else
-typedef size_t Tcl_Size;
-#endif
+ typedef ptrdiff_t Tcl_Size;
+# define TCL_SIZE_MAX PTRDIFF_MAX
+# define TCL_SIZE_MODIFIER TCL_T_MODIFIER
+#endif /* TCL_MAJOR_VERSION */
#ifdef _WIN32
# if TCL_MAJOR_VERSION > 8 || defined(_WIN64) || defined(_USE_64BIT_TIME_T)
typedef struct __stat64 Tcl_StatBuf;
# elif defined(_USE_32BIT_TIME_T)
- typedef struct _stati64 Tcl_StatBuf;
+ typedef struct _stati64 Tcl_StatBuf;
# else
typedef struct _stat32i64 Tcl_StatBuf;
# endif
#elif defined(__CYGWIN__)
- typedef struct {
+ typedef struct {
unsigned st_dev;
unsigned short st_ino;
unsigned short st_mode;
@@ -555,7 +568,7 @@ typedef int (Tcl_CmdObjTraceProc) (void *clientData, Tcl_Interp *interp,
int level, const char *command, Tcl_Command commandInfo, int objc,
struct Tcl_Obj *const *objv);
typedef int (Tcl_CmdObjTraceProc2) (void *clientData, Tcl_Interp *interp,
- size_t level, const char *command, Tcl_Command commandInfo, size_t objc,
+ Tcl_Size level, const char *command, Tcl_Command commandInfo, Tcl_Size objc,
struct Tcl_Obj *const *objv);
typedef void (Tcl_CmdObjTraceDeleteProc) (void *clientData);
typedef void (Tcl_DupInternalRepProc) (struct Tcl_Obj *srcPtr,
@@ -580,7 +593,7 @@ typedef void (Tcl_NamespaceDeleteProc) (void *clientData);
typedef int (Tcl_ObjCmdProc) (void *clientData, Tcl_Interp *interp,
int objc, struct Tcl_Obj *const *objv);
typedef int (Tcl_ObjCmdProc2) (void *clientData, Tcl_Interp *interp,
- size_t objc, struct Tcl_Obj *const *objv);
+ Tcl_Size objc, struct Tcl_Obj *const *objv);
typedef int (Tcl_LibraryInitProc) (Tcl_Interp *interp);
typedef int (Tcl_LibraryUnloadProc) (Tcl_Interp *interp, int flags);
typedef void (Tcl_PanicProc) (const char *format, ...);
@@ -2320,7 +2333,7 @@ EXTERN const char *TclZipfs_AppHook(int *argc, char ***argv);
# define Tcl_FindExecutable(arg) ((Tcl_FindExecutable)((const char *)(arg)))
#endif
# define Tcl_MainEx Tcl_MainExW
- EXTERN TCL_NORETURN void Tcl_MainExW(size_t argc, wchar_t **argv,
+ EXTERN TCL_NORETURN void Tcl_MainExW(Tcl_Size argc, wchar_t **argv,
Tcl_AppInitProc *appInitProc, Tcl_Interp *interp);
#endif
#if defined(USE_TCL_STUBS) && (TCL_MAJOR_VERSION > 8)
diff --git a/generic/tclArithSeries.c b/generic/tclArithSeries.c
index 0232746..2efae10 100755
--- a/generic/tclArithSeries.c
+++ b/generic/tclArithSeries.c
@@ -357,7 +357,7 @@ TclNewArithSeriesObj(
if (TCL_MAJOR_VERSION < 9 && len > ListSizeT_MAX) {
Tcl_SetObjResult(
interp,
- Tcl_NewStringObj("max length of a Tcl list exceeded", TCL_INDEX_NONE));
+ Tcl_NewStringObj("max length of a Tcl list exceeded", -1));
Tcl_SetErrorCode(interp, "TCL", "MEMORY", NULL);
return TCL_ERROR;
}
@@ -444,7 +444,7 @@ TclArithSeriesObjIndex(
if (interp) {
Tcl_SetObjResult(interp,
Tcl_ObjPrintf("index %" TCL_LL_MODIFIER "d is out of bounds 0 to %"
- TCL_Z_MODIFIER "d", index, (arithSeriesRepPtr->len-1)));
+ TCL_LL_MODIFIER "d", index, (arithSeriesRepPtr->len-1)));
Tcl_SetErrorCode(interp, "TCL", "MEMORY", NULL);
}
return NULL;
@@ -865,7 +865,7 @@ TclArithSeriesGetElements(
if (interp) {
Tcl_SetObjResult(
interp,
- Tcl_NewStringObj("max length of a Tcl list exceeded", TCL_INDEX_NONE));
+ Tcl_NewStringObj("max length of a Tcl list exceeded", -1));
Tcl_SetErrorCode(interp, "TCL", "MEMORY", NULL);
}
return TCL_ERROR;
diff --git a/generic/tclArithSeries.h b/generic/tclArithSeries.h
index f59720c..bb8dfa8 100644
--- a/generic/tclArithSeries.h
+++ b/generic/tclArithSeries.h
@@ -16,7 +16,7 @@
* but it's faster to cache it inside the internal representation.
*/
typedef struct {
- Tcl_Size len;
+ Tcl_WideInt len;
Tcl_Obj **elements;
int isDouble;
Tcl_WideInt start;
@@ -24,7 +24,7 @@ typedef struct {
Tcl_WideInt step;
} ArithSeries;
typedef struct {
- Tcl_Size len;
+ Tcl_WideInt len;
Tcl_Obj **elements;
int isDouble;
double start;
diff --git a/generic/tclAssembly.c b/generic/tclAssembly.c
index af95312..e3f9517 100644
--- a/generic/tclAssembly.c
+++ b/generic/tclAssembly.c
@@ -222,7 +222,7 @@ typedef struct AssemblyEnv {
Tcl_HashTable labelHash; /* Hash table whose keys are labels and whose
* values are 'label' objects storing the code
* offsets of the labels. */
- size_t cmdLine; /* Current line number within the assembly
+ Tcl_Size cmdLine; /* Current line number within the assembly
* code */
int* clNext; /* Invisible continuation line for
* [info frame] */
@@ -1269,10 +1269,10 @@ AssembleOneLine(
Tcl_Obj* operand1Obj = NULL;
/* First operand to the instruction */
const char* operand1; /* String rep of the operand */
- size_t operand1Len; /* String length of the operand */
+ Tcl_Size operand1Len; /* String length of the operand */
int opnd; /* Integer representation of an operand */
int litIndex; /* Literal pool index of a constant */
- size_t localVar; /* LVT index of a local variable */
+ Tcl_Size localVar; /* LVT index of a local variable */
int flags; /* Flags for a basic block */
JumptableInfo* jtPtr; /* Pointer to a jumptable */
int infoIndex; /* Index of the jumptable in auxdata */
@@ -1367,7 +1367,7 @@ AssembleOneLine(
goto cleanup;
}
localVar = FindLocalVar(assemEnvPtr, &tokenPtr);
- if (localVar == TCL_INDEX_NONE) {
+ if (localVar < 0) {
goto cleanup;
}
BBEmitInstInt1(assemEnvPtr, tblIdx, opnd, 0);
@@ -1384,7 +1384,7 @@ AssembleOneLine(
}
if (opnd < 0 || opnd > 3) {
Tcl_SetObjResult(interp,
- Tcl_NewStringObj("operand must be [0..3]", TCL_INDEX_NONE));
+ Tcl_NewStringObj("operand must be [0..3]", -1));
Tcl_SetErrorCode(interp, "TCL", "ASSEM", "OPERAND<0,>3", NULL);
goto cleanup;
}
@@ -1427,7 +1427,7 @@ AssembleOneLine(
goto cleanup;
}
localVar = FindLocalVar(assemEnvPtr, &tokenPtr);
- if (localVar == TCL_INDEX_NONE) {
+ if (localVar < 0) {
goto cleanup;
}
BBEmitInstInt4(assemEnvPtr, tblIdx, opnd, opnd+1);
@@ -1444,7 +1444,7 @@ AssembleOneLine(
goto cleanup;
}
localVar = FindLocalVar(assemEnvPtr, &tokenPtr);
- if (localVar == TCL_INDEX_NONE) {
+ if (localVar < 0) {
goto cleanup;
}
BBEmitInstInt4(assemEnvPtr, tblIdx, opnd, opnd);
@@ -1625,7 +1625,7 @@ AssembleOneLine(
if (opnd < 2) {
if (assemEnvPtr->flags & TCL_EVAL_DIRECT) {
Tcl_SetObjResult(interp,
- Tcl_NewStringObj("operand must be >=2", TCL_INDEX_NONE));
+ Tcl_NewStringObj("operand must be >=2", -1));
Tcl_SetErrorCode(interp, "TCL", "ASSEM", "OPERAND>=2", NULL);
}
goto cleanup;
@@ -1639,7 +1639,7 @@ AssembleOneLine(
goto cleanup;
}
localVar = FindLocalVar(assemEnvPtr, &tokenPtr);
- if (localVar == TCL_INDEX_NONE) {
+ if (localVar < 0) {
goto cleanup;
}
BBEmitInst1or4(assemEnvPtr, tblIdx, localVar, 0);
@@ -1651,7 +1651,7 @@ AssembleOneLine(
goto cleanup;
}
localVar = FindLocalVar(assemEnvPtr, &tokenPtr);
- if (localVar == TCL_INDEX_NONE || CheckOneByte(interp, localVar)) {
+ if (localVar < 0 || CheckOneByte(interp, localVar)) {
goto cleanup;
}
BBEmitInstInt1(assemEnvPtr, tblIdx, localVar, 0);
@@ -1663,7 +1663,7 @@ AssembleOneLine(
goto cleanup;
}
localVar = FindLocalVar(assemEnvPtr, &tokenPtr);
- if (localVar == TCL_INDEX_NONE || CheckOneByte(interp, localVar)
+ if (localVar < 0 || CheckOneByte(interp, localVar)
|| GetIntegerOperand(assemEnvPtr, &tokenPtr, &opnd) != TCL_OK
|| CheckSignedOneByte(interp, opnd)) {
goto cleanup;
@@ -1678,7 +1678,7 @@ AssembleOneLine(
goto cleanup;
}
localVar = FindLocalVar(assemEnvPtr, &tokenPtr);
- if (localVar == TCL_INDEX_NONE) {
+ if (localVar < 0) {
goto cleanup;
}
BBEmitInstInt4(assemEnvPtr, tblIdx, localVar, 0);
@@ -1742,7 +1742,7 @@ AssembleOneLine(
goto cleanup;
}
localVar = FindLocalVar(assemEnvPtr, &tokenPtr);
- if (localVar == TCL_INDEX_NONE) {
+ if (localVar < 0) {
goto cleanup;
}
BBEmitInstInt4(assemEnvPtr, tblIdx, opnd, 0);
@@ -1969,7 +1969,7 @@ CreateMirrorJumpTable(
AssemblyEnv* assemEnvPtr, /* Assembly environment */
Tcl_Obj* jumps) /* List of alternating keywords and labels */
{
- size_t objc; /* Number of elements in the 'jumps' list */
+ Tcl_Size objc; /* Number of elements in the 'jumps' list */
Tcl_Obj** objv; /* Pointers to the elements in the list */
CompileEnv* envPtr = assemEnvPtr->envPtr;
/* Compilation environment */
@@ -1982,7 +1982,7 @@ CreateMirrorJumpTable(
Tcl_HashEntry* hashEntry; /* Entry for a key in the hashtable */
int isNew; /* Flag==1 if the key is not yet in the
* table. */
- size_t i;
+ Tcl_Size i;
if (TclListObjLengthM(interp, jumps, &objc) != TCL_OK) {
return TCL_ERROR;
@@ -2107,7 +2107,7 @@ GetNextOperand(
Tcl_DecrRefCount(operandObj);
if (assemEnvPtr->flags & TCL_EVAL_DIRECT) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "assembly code may not contain substitutions", TCL_INDEX_NONE));
+ "assembly code may not contain substitutions", -1));
Tcl_SetErrorCode(interp, "TCL", "ASSEM", "NOSUBST", NULL);
}
return TCL_ERROR;
@@ -2313,8 +2313,8 @@ FindLocalVar(
* source code. */
Tcl_Obj* varNameObj; /* Name of the variable */
const char* varNameStr;
- size_t varNameLen;
- size_t localVar; /* Index of the variable in the LVT */
+ Tcl_Size varNameLen;
+ Tcl_Size localVar; /* Index of the variable in the LVT */
if (GetNextOperand(assemEnvPtr, tokenPtrPtr, &varNameObj) != TCL_OK) {
return TCL_INDEX_NONE;
@@ -2326,11 +2326,11 @@ FindLocalVar(
}
localVar = TclFindCompiledLocal(varNameStr, varNameLen, 1, envPtr);
Tcl_DecrRefCount(varNameObj);
- if (localVar == TCL_INDEX_NONE) {
+ if (localVar < 0) {
if (assemEnvPtr->flags & TCL_EVAL_DIRECT) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"cannot use this instruction to create a variable"
- " in a non-proc context", TCL_INDEX_NONE));
+ " in a non-proc context", -1));
Tcl_SetErrorCode(interp, "TCL", "ASSEM", "LVT", NULL);
}
return TCL_INDEX_NONE;
@@ -2400,7 +2400,7 @@ CheckOneByte(
Tcl_Obj* result; /* Error message */
if (value < 0 || value > 0xFF) {
- result = Tcl_NewStringObj("operand does not fit in one byte", TCL_INDEX_NONE);
+ result = Tcl_NewStringObj("operand does not fit in one byte", -1);
Tcl_SetObjResult(interp, result);
Tcl_SetErrorCode(interp, "TCL", "ASSEM", "1BYTE", NULL);
return TCL_ERROR;
@@ -2435,7 +2435,7 @@ CheckSignedOneByte(
Tcl_Obj* result; /* Error message */
if (value > 0x7F || value < -0x80) {
- result = Tcl_NewStringObj("operand does not fit in one byte", TCL_INDEX_NONE);
+ result = Tcl_NewStringObj("operand does not fit in one byte", -1);
Tcl_SetObjResult(interp, result);
Tcl_SetErrorCode(interp, "TCL", "ASSEM", "1BYTE", NULL);
return TCL_ERROR;
@@ -2468,7 +2468,7 @@ CheckNonNegative(
Tcl_Obj* result; /* Error message */
if (value < 0) {
- result = Tcl_NewStringObj("operand must be nonnegative", TCL_INDEX_NONE);
+ result = Tcl_NewStringObj("operand must be nonnegative", -1);
Tcl_SetObjResult(interp, result);
Tcl_SetErrorCode(interp, "TCL", "ASSEM", "NONNEGATIVE", NULL);
return TCL_ERROR;
@@ -2501,7 +2501,7 @@ CheckStrictlyPositive(
Tcl_Obj* result; /* Error message */
if (value <= 0) {
- result = Tcl_NewStringObj("operand must be positive", TCL_INDEX_NONE);
+ result = Tcl_NewStringObj("operand must be positive", -1);
Tcl_SetObjResult(interp, result);
Tcl_SetErrorCode(interp, "TCL", "ASSEM", "POSITIVE", NULL);
return TCL_ERROR;
@@ -3321,7 +3321,7 @@ CheckStack(
{
CompileEnv* envPtr = assemEnvPtr->envPtr;
/* Compilation environment */
- size_t maxDepth; /* Maximum stack depth overall */
+ Tcl_Size maxDepth; /* Maximum stack depth overall */
/*
* Checking the head block will check all the other blocks recursively.
@@ -3414,7 +3414,7 @@ StackCheckBasicBlock(
}
if (assemEnvPtr->flags & TCL_EVAL_DIRECT) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "inconsistent stack depths on two execution paths", TCL_INDEX_NONE));
+ "inconsistent stack depths on two execution paths", -1));
/*
* TODO - add execution trace of both paths
@@ -3443,7 +3443,7 @@ StackCheckBasicBlock(
if (initialStackDepth + blockPtr->minStackDepth < 0) {
if (assemEnvPtr->flags & TCL_EVAL_DIRECT) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj("stack underflow", TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("stack underflow", -1));
Tcl_SetErrorCode(interp, "TCL", "ASSEM", "BADSTACK", NULL);
AddBasicBlockRangeToErrorInfo(assemEnvPtr, blockPtr);
Tcl_SetErrorLine(interp, blockPtr->startLine);
@@ -3462,8 +3462,8 @@ StackCheckBasicBlock(
+ blockPtr->enclosingCatch->finalStackDepth)) {
if (assemEnvPtr->flags & TCL_EVAL_DIRECT) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "code pops stack below level of enclosing catch", TCL_INDEX_NONE));
- Tcl_SetErrorCode(interp, "TCL", "ASSEM", "BADSTACKINCATCH", TCL_INDEX_NONE);
+ "code pops stack below level of enclosing catch", -1));
+ Tcl_SetErrorCode(interp, "TCL", "ASSEM", "BADSTACKINCATCH", -1);
AddBasicBlockRangeToErrorInfo(assemEnvPtr, blockPtr);
Tcl_SetErrorLine(interp, blockPtr->startLine);
}
@@ -3734,7 +3734,7 @@ ProcessCatchesInBasicBlock(
if (assemEnvPtr->flags & TCL_EVAL_DIRECT) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"execution reaches an instruction in inconsistent "
- "exception contexts", TCL_INDEX_NONE));
+ "exception contexts", -1));
Tcl_SetErrorLine(interp, bbPtr->startLine);
Tcl_SetErrorCode(interp, "TCL", "ASSEM", "BADCATCH", NULL);
}
@@ -3793,7 +3793,7 @@ ProcessCatchesInBasicBlock(
if (enclosing == NULL) {
if (assemEnvPtr->flags & TCL_EVAL_DIRECT) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "endCatch without a corresponding beginCatch", TCL_INDEX_NONE));
+ "endCatch without a corresponding beginCatch", -1));
Tcl_SetErrorLine(interp, bbPtr->startLine);
Tcl_SetErrorCode(interp, "TCL", "ASSEM", "BADENDCATCH", NULL);
}
@@ -3868,7 +3868,7 @@ CheckForUnclosedCatches(
if (assemEnvPtr->curr_bb->catchState >= BBCS_INCATCH) {
if (assemEnvPtr->flags & TCL_EVAL_DIRECT) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "catch still active on exit from assembly code", TCL_INDEX_NONE));
+ "catch still active on exit from assembly code", -1));
Tcl_SetErrorLine(interp,
assemEnvPtr->curr_bb->enclosingCatch->startLine);
Tcl_SetErrorCode(interp, "TCL", "ASSEM", "UNCLOSEDCATCH", NULL);
diff --git a/generic/tclBasic.c b/generic/tclBasic.c
index 9b1b5a5..8229533 100644
--- a/generic/tclBasic.c
+++ b/generic/tclBasic.c
@@ -93,7 +93,7 @@ typedef struct {
* cancellation. */
char *result; /* The script cancellation result or NULL for
* a default result. */
- size_t length; /* Length of the above error message. */
+ Tcl_Size length; /* Length of the above error message. */
void *clientData; /* Not used. */
int flags; /* Additional flags */
} CancelInfo;
@@ -220,8 +220,8 @@ MODULE_SCOPE const TclStubs tclStubs;
#define CORO_ACTIVATE_YIELD NULL
#define CORO_ACTIVATE_YIELDM INT2PTR(1)
-#define COROUTINE_ARGUMENTS_SINGLE_OPTIONAL ((size_t)-1)
-#define COROUTINE_ARGUMENTS_ARBITRARY ((size_t)-2)
+#define COROUTINE_ARGUMENTS_SINGLE_OPTIONAL (-1)
+#define COROUTINE_ARGUMENTS_ARBITRARY (-2)
/*
* The following structure define the commands in the Tcl core.
@@ -613,15 +613,15 @@ static int
buildInfoObjCmd2(
void *clientData,
Tcl_Interp *interp, /* Current interpreter. */
- size_t objc, /* Number of arguments. */
+ Tcl_Size objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
{
- if (objc - 1 > 1) {
+ if (objc > 2) {
Tcl_WrongNumArgs(interp, 1, objv, "?option?");
return TCL_ERROR;
}
if (objc == 2) {
- size_t len;
+ Tcl_Size len;
const char *arg = Tcl_GetStringFromObj(objv[1], &len);
if (len == 7 && !strcmp(arg, "version")) {
char buf[80];
@@ -702,7 +702,7 @@ buildInfoObjCmd(
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
{
- return buildInfoObjCmd2(clientData, interp, (size_t)objc, objv);
+ return buildInfoObjCmd2(clientData, interp, objc, objv);
}
/*
@@ -1799,7 +1799,7 @@ DeleteInterpProc(
Tcl_HashSearch search;
Tcl_HashTable *hTablePtr;
ResolverScheme *resPtr, *nextResPtr;
- size_t i;
+ Tcl_Size i;
/*
* Punt if there is an error in the Tcl_Release/Tcl_Preserve matchup,
@@ -2152,7 +2152,7 @@ Tcl_HideCommand(
if (strstr(hiddenCmdToken, "::") != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"cannot use namespace qualifiers in hidden command"
- " token (rename)", TCL_INDEX_NONE));
+ " token (rename)", -1));
Tcl_SetErrorCode(interp, "TCL", "VALUE", "HIDDENTOKEN", NULL);
return TCL_ERROR;
}
@@ -2665,7 +2665,7 @@ static int cmdWrapperProc(void *clientData,
if (objc < 0) {
objc = -1;
}
- return info->proc(info->clientData, interp, (size_t)objc, objv);
+ return info->proc(info->clientData, interp, objc, objv);
}
static void cmdWrapperDeleteProc(void *clientData) {
@@ -3188,11 +3188,11 @@ TclRenameCommand(
*/
Tcl_DStringInit(&newFullName);
- Tcl_DStringAppend(&newFullName, newNsPtr->fullName, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&newFullName, newNsPtr->fullName, -1);
if (newNsPtr != iPtr->globalNsPtr) {
TclDStringAppendLiteral(&newFullName, "::");
}
- Tcl_DStringAppend(&newFullName, newTail, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&newFullName, newTail, -1);
cmdPtr->refCount++;
CallCommandTraces(iPtr, cmdPtr, TclGetString(oldFullName),
Tcl_DStringValue(&newFullName), TCL_TRACE_RENAME);
@@ -3291,14 +3291,14 @@ static int
invokeObj2Command(
void *clientData, /* Points to command's Command structure. */
Tcl_Interp *interp, /* Current interpreter. */
- size_t objc, /* Number of arguments. */
+ Tcl_Size objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
{
int result;
Command *cmdPtr = (Command *) clientData;
if (objc > INT_MAX) {
- objc = TCL_INDEX_NONE;
+ objc = TCL_INDEX_NONE; /* TODO - why? Should error, not truncate */
}
if (cmdPtr->objProc != NULL) {
result = cmdPtr->objProc(cmdPtr->objClientData, interp, objc, objv);
@@ -3311,7 +3311,7 @@ invokeObj2Command(
static int cmdWrapper2Proc(void *clientData,
Tcl_Interp *interp,
- size_t objc,
+ Tcl_Size objc,
Tcl_Obj *const objv[])
{
Command *cmdPtr = (Command *)clientData;
@@ -3553,14 +3553,14 @@ Tcl_GetCommandFullName(
if ((cmdPtr != NULL) && TclRoutineHasName(cmdPtr)) {
if (cmdPtr->nsPtr != NULL) {
- Tcl_AppendToObj(objPtr, cmdPtr->nsPtr->fullName, TCL_INDEX_NONE);
+ Tcl_AppendToObj(objPtr, cmdPtr->nsPtr->fullName, -1);
if (cmdPtr->nsPtr != iPtr->globalNsPtr) {
Tcl_AppendToObj(objPtr, "::", 2);
}
}
if (cmdPtr->hPtr != NULL) {
name = (char *)Tcl_GetHashKey(cmdPtr->hPtr->tablePtr, cmdPtr->hPtr);
- Tcl_AppendToObj(objPtr, name, TCL_INDEX_NONE);
+ Tcl_AppendToObj(objPtr, name, -1);
}
}
}
@@ -4061,7 +4061,7 @@ TclInterpReady(
if (iPtr->flags & DELETED) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to call eval in deleted interpreter", TCL_INDEX_NONE));
+ "attempt to call eval in deleted interpreter", -1));
Tcl_SetErrorCode(interp, "TCL", "IDELETE",
"attempt to call eval in deleted interpreter", NULL);
return TCL_ERROR;
@@ -4090,7 +4090,7 @@ TclInterpReady(
}
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "too many nested evaluations (infinite loop?)", TCL_INDEX_NONE));
+ "too many nested evaluations (infinite loop?)", -1));
Tcl_SetErrorCode(interp, "TCL", "LIMIT", "STACK", NULL);
return TCL_ERROR;
}
@@ -4199,7 +4199,7 @@ Tcl_Canceled(
if (flags & TCL_LEAVE_ERR_MSG) {
const char *id, *message = NULL;
- size_t length;
+ Tcl_Size length;
/*
* Setup errorCode variables so that we can differentiate between
@@ -4224,7 +4224,7 @@ Tcl_Canceled(
}
}
- Tcl_SetObjResult(interp, Tcl_NewStringObj(message, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(message, -1));
Tcl_SetErrorCode(interp, "TCL", "CANCEL", id, message, NULL);
}
@@ -4370,7 +4370,7 @@ int
Tcl_EvalObjv(
Tcl_Interp *interp, /* Interpreter in which to evaluate the
* command. Also used for error reporting. */
- size_t objc, /* Number of words in command. */
+ Tcl_Size objc, /* Number of words in command. */
Tcl_Obj *const objv[], /* An array of pointers to objects that are
* the words that make up the command. */
int flags) /* Collection of OR-ed bits that control the
@@ -4389,7 +4389,7 @@ int
TclNREvalObjv(
Tcl_Interp *interp, /* Interpreter in which to evaluate the
* command. Also used for error reporting. */
- size_t objc, /* Number of words in command. */
+ Tcl_Size objc, /* Number of words in command. */
Tcl_Obj *const objv[], /* An array of pointers to objects that are
* the words that make up the command. */
int flags, /* Collection of OR-ed bits that control the
@@ -4797,7 +4797,7 @@ TEOV_Error(
Interp *iPtr = (Interp *) interp;
Tcl_Obj *listPtr;
const char *cmdString;
- size_t cmdLen;
+ Tcl_Size cmdLen;
int objc = PTR2INT(data[0]);
Tcl_Obj **objv = (Tcl_Obj **)data[1];
@@ -4826,7 +4826,7 @@ TEOV_NotFound(
{
Command * cmdPtr;
Interp *iPtr = (Interp *) interp;
- size_t i, newObjc, handlerObjc;
+ Tcl_Size i, newObjc, handlerObjc;
Tcl_Obj **newObjv, **handlerObjv;
CallFrame *varFramePtr = iPtr->varFramePtr;
Namespace *currNsPtr = NULL;/* Used to check for and invoke any registered
@@ -4953,7 +4953,7 @@ TEOV_RunEnterTraces(
{
Interp *iPtr = (Interp *) interp;
Command *cmdPtr = *cmdPtrPtr;
- size_t length, newEpoch, cmdEpoch = cmdPtr->cmdEpoch;
+ Tcl_Size length, newEpoch, cmdEpoch = cmdPtr->cmdEpoch;
int traceCode = TCL_OK;
const char *command = Tcl_GetStringFromObj(commandPtr, &length);
@@ -5006,7 +5006,7 @@ TEOV_RunLeaveTraces(
Tcl_Obj *commandPtr = (Tcl_Obj *)data[1];
Command *cmdPtr = (Command *)data[2];
Tcl_Obj **objv = (Tcl_Obj **)data[3];
- size_t length;
+ Tcl_Size length;
const char *command = Tcl_GetStringFromObj(commandPtr, &length);
if (!(cmdPtr->flags & CMD_DYING)) {
@@ -5089,7 +5089,7 @@ Tcl_EvalTokensStandard(
* errors. */
Tcl_Token *tokenPtr, /* Pointer to first in an array of tokens to
* evaluate and concatenate. */
- size_t count) /* Number of tokens to consider at tokenPtr.
+ Tcl_Size count) /* Number of tokens to consider at tokenPtr.
* Must be at least 1. */
{
return TclSubstTokens(interp, tokenPtr, count, /* numLeftPtr */ NULL, 1,
@@ -5122,7 +5122,7 @@ Tcl_EvalEx(
Tcl_Interp *interp, /* Interpreter in which to evaluate the
* script. Also used for error reporting. */
const char *script, /* First character of script to evaluate. */
- size_t numBytes, /* Number of bytes in script. If -1, the
+ Tcl_Size numBytes, /* Number of bytes in script. If -1, the
* script consists of all bytes up to the
* first null character. */
int flags) /* Collection of OR-ed bits that control the
@@ -5137,13 +5137,13 @@ TclEvalEx(
Tcl_Interp *interp, /* Interpreter in which to evaluate the
* script. Also used for error reporting. */
const char *script, /* First character of script to evaluate. */
- size_t numBytes, /* Number of bytes in script. If -1, the
+ Tcl_Size numBytes, /* Number of bytes in script. If -1, the
* script consists of all bytes up to the
* first NUL character. */
int flags, /* Collection of OR-ed bits that control the
* evaluation of the script. Only
* TCL_EVAL_GLOBAL is currently supported. */
- size_t line, /* The line the script starts on. */
+ Tcl_Size line, /* The line the script starts on. */
int *clNextOuter, /* Information about an outer context for */
const char *outerScript) /* continuation line data. This is set only in
* TclSubstTokens(), to properly handle
@@ -5169,7 +5169,7 @@ TclEvalEx(
int *expand, *lines, *lineSpace;
Tcl_Token *tokenPtr;
int bytesLeft, expandRequested, code = TCL_OK;
- size_t commandLength;
+ Tcl_Size commandLength;
CallFrame *savedVarFramePtr;/* Saves old copy of iPtr->varFramePtr in case
* TCL_EVAL_GLOBAL was set. */
int allowExceptions = (iPtr->evalFlags & TCL_ALLOW_EXCEPTIONS);
@@ -5203,7 +5203,7 @@ TclEvalEx(
}
}
- if (numBytes == TCL_INDEX_NONE) {
+ if (numBytes < 0) {
numBytes = strlen(script);
}
Tcl_ResetResult(interp);
@@ -5309,7 +5309,7 @@ TclEvalEx(
* per-command parsing.
*/
- size_t wordLine = line;
+ Tcl_Size wordLine = line;
const char *wordStart = parsePtr->commandStart;
int *wordCLNext = clNext;
unsigned int objectsNeeded = 0;
@@ -5364,7 +5364,7 @@ TclEvalEx(
objv[objectsUsed] = Tcl_GetObjResult(interp);
Tcl_IncrRefCount(objv[objectsUsed]);
if (tokenPtr->type == TCL_TOKEN_EXPAND_WORD) {
- size_t numElements;
+ Tcl_Size numElements;
code = TclListObjLengthM(interp, objv[objectsUsed],
&numElements);
@@ -5415,7 +5415,7 @@ TclEvalEx(
objectsUsed = 0;
while (wordIdx--) {
if (expand[wordIdx]) {
- size_t numElements;
+ Tcl_Size numElements;
Tcl_Obj **elements, *temp = copy[wordIdx];
TclListObjGetElementsM(NULL, temp, &numElements,
@@ -5608,7 +5608,7 @@ TclEvalEx(
void
TclAdvanceLines(
- size_t *line,
+ Tcl_Size *line,
const char *start,
const char *end)
{
@@ -5643,7 +5643,7 @@ TclAdvanceLines(
void
TclAdvanceContinuations(
- size_t *line,
+ Tcl_Size *line,
int **clNextPtrPtr,
int loc)
{
@@ -5823,7 +5823,7 @@ TclArgumentBCEnter(
void *codePtr,
CmdFrame *cfPtr,
int cmd,
- size_t pc)
+ Tcl_Size pc)
{
ExtCmdLoc *eclPtr;
int word;
@@ -5852,7 +5852,7 @@ TclArgumentBCEnter(
* housekeeping, and can escape now.
*/
- if (ePtr->nline != (size_t)objc) {
+ if (ePtr->nline != objc) {
return;
}
@@ -6112,7 +6112,7 @@ TclNREvalObjEx(
if (TclListObjIsCanonical(objPtr)) {
CmdFrame *eoFramePtr = NULL;
- size_t objc;
+ Tcl_Size objc;
Tcl_Obj *listPtr, **objv;
/*
@@ -6222,7 +6222,7 @@ TclNREvalObjEx(
*/
const char *script;
- size_t numSrcBytes;
+ Tcl_Size numSrcBytes;
/*
* Now we check if we have data about invisible continuation lines for
@@ -6276,7 +6276,7 @@ TEOEx_ByteCodeCallback(
}
if ((result != TCL_OK) && (result != TCL_ERROR) && !allowExceptions) {
const char *script;
- size_t numSrcBytes;
+ Tcl_Size numSrcBytes;
ProcessUnexpectedResult(interp, result);
result = TCL_ERROR;
@@ -6361,10 +6361,10 @@ ProcessUnexpectedResult(
Tcl_ResetResult(interp);
if (returnCode == TCL_BREAK) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "invoked \"break\" outside of a loop", TCL_INDEX_NONE));
+ "invoked \"break\" outside of a loop", -1));
} else if (returnCode == TCL_CONTINUE) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "invoked \"continue\" outside of a loop", TCL_INDEX_NONE));
+ "invoked \"continue\" outside of a loop", -1));
} else {
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
"command returned bad code: %d", returnCode));
@@ -6410,7 +6410,7 @@ Tcl_ExprLong(
*ptr = 0;
} else {
- exprPtr = Tcl_NewStringObj(exprstring, TCL_INDEX_NONE);
+ exprPtr = Tcl_NewStringObj(exprstring, -1);
Tcl_IncrRefCount(exprPtr);
result = Tcl_ExprLongObj(interp, exprPtr, ptr);
Tcl_DecrRefCount(exprPtr);
@@ -6435,7 +6435,7 @@ Tcl_ExprDouble(
*ptr = 0.0;
} else {
- exprPtr = Tcl_NewStringObj(exprstring, TCL_INDEX_NONE);
+ exprPtr = Tcl_NewStringObj(exprstring, -1);
Tcl_IncrRefCount(exprPtr);
result = Tcl_ExprDoubleObj(interp, exprPtr, ptr);
Tcl_DecrRefCount(exprPtr);
@@ -6460,7 +6460,7 @@ Tcl_ExprBoolean(
return TCL_OK;
} else {
int result;
- Tcl_Obj *exprPtr = Tcl_NewStringObj(exprstring, TCL_INDEX_NONE);
+ Tcl_Obj *exprPtr = Tcl_NewStringObj(exprstring, -1);
Tcl_IncrRefCount(exprPtr);
result = Tcl_ExprBooleanObj(interp, exprPtr, ptr);
@@ -6673,7 +6673,7 @@ TclObjInvoke(
}
if ((objc < 1) || (objv == NULL)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "illegal argument vector", TCL_INDEX_NONE));
+ "illegal argument vector", -1));
return TCL_ERROR;
}
if ((flags & TCL_INVOKE_HIDDEN) == 0) {
@@ -6772,7 +6772,7 @@ Tcl_ExprString(
Tcl_SetObjResult(interp, Tcl_NewWideIntObj(0));
} else {
- Tcl_Obj *resultPtr, *exprObj = Tcl_NewStringObj(expr, TCL_INDEX_NONE);
+ Tcl_Obj *resultPtr, *exprObj = Tcl_NewStringObj(expr, -1);
Tcl_IncrRefCount(exprObj);
code = Tcl_ExprObj(interp, exprObj, &resultPtr);
@@ -6810,7 +6810,7 @@ Tcl_AppendObjToErrorInfo(
* pertains. */
Tcl_Obj *objPtr) /* Message to record. */
{
- size_t length;
+ Tcl_Size length;
const char *message = Tcl_GetStringFromObj(objPtr, &length);
Interp *iPtr = (Interp *) interp;
@@ -6886,10 +6886,10 @@ Tcl_VarEval(
if (string == NULL) {
break;
}
- Tcl_DStringAppend(&buf, string, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&buf, string, -1);
}
- result = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), TCL_INDEX_NONE, 0);
+ result = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), -1, 0);
Tcl_DStringFree(&buf);
return result;
}
@@ -6911,17 +6911,17 @@ Tcl_VarEval(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
Tcl_SetRecursionLimit(
Tcl_Interp *interp, /* Interpreter whose nesting limit is to be
* set. */
- size_t depth) /* New value for maximimum depth. */
+ Tcl_Size depth) /* New value for maximimum depth. */
{
Interp *iPtr = (Interp *) interp;
- size_t old;
+ Tcl_Size old;
old = iPtr->maxNestingDepth;
- if (depth + 1 > 1) {
+ if (depth > 0) {
iPtr->maxNestingDepth = depth;
}
return old;
@@ -7192,7 +7192,7 @@ ExprIsqrtFunc(
negarg:
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "square root of negative argument", TCL_INDEX_NONE));
+ "square root of negative argument", -1));
Tcl_SetErrorCode(interp, "ARITH", "DOMAIN",
"domain error: argument not in valid range", NULL);
return TCL_ERROR;
@@ -7394,7 +7394,7 @@ ExprAbsFunc(
goto unChanged;
} else if (l == 0) {
if (TclHasStringRep(objv[1])) {
- size_t numBytes;
+ Tcl_Size numBytes;
const char *bytes = Tcl_GetStringFromObj(objv[1], &numBytes);
while (numBytes) {
@@ -8474,7 +8474,7 @@ Tcl_NRCallObjProc(
Tcl_Interp *interp,
Tcl_ObjCmdProc *objProc,
void *clientData,
- size_t objc,
+ Tcl_Size objc,
Tcl_Obj *const objv[])
{
NRE_callback *rootPtr = TOP_CB(interp);
@@ -8497,7 +8497,7 @@ int wrapperNRObjProc(
if (objc < 0) {
objc = -1;
}
- return proc(clientData, interp, (size_t)objc, objv);
+ return proc(clientData, interp, (Tcl_Size)objc, objv);
}
int
@@ -8561,7 +8561,7 @@ static int cmdWrapperNreProc(
if (objc < 0) {
objc = -1;
}
- return info->nreProc(info->clientData, interp, (size_t)objc, objv);
+ return info->nreProc(info->clientData, interp, objc, objv);
}
Tcl_Command
@@ -8657,7 +8657,7 @@ int
Tcl_NREvalObjv(
Tcl_Interp *interp, /* Interpreter in which to evaluate the
* command. Also used for error reporting. */
- size_t objc, /* Number of words in command. */
+ Tcl_Size objc, /* Number of words in command. */
Tcl_Obj *const objv[], /* An array of pointers to objects that are
* the words that make up the command. */
int flags) /* Collection of OR-ed bits that control the
@@ -8672,7 +8672,7 @@ int
Tcl_NRCmdSwap(
Tcl_Interp *interp,
Tcl_Command cmd,
- size_t objc,
+ Tcl_Size objc,
Tcl_Obj *const objv[],
int flags)
{
@@ -8806,7 +8806,7 @@ TclNRTailcallObjCmd(
if (!(iPtr->varFramePtr->isProcCallFrame & 1)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "tailcall can only be called from a proc, lambda or method", TCL_INDEX_NONE));
+ "tailcall can only be called from a proc, lambda or method", -1));
Tcl_SetErrorCode(interp, "TCL", "TAILCALL", "ILLEGAL", NULL);
return TCL_ERROR;
}
@@ -8836,7 +8836,7 @@ TclNRTailcallObjCmd(
* namespace, the rest the command to be tailcalled.
*/
- nsObjPtr = Tcl_NewStringObj(nsPtr->fullName, TCL_INDEX_NONE);
+ nsObjPtr = Tcl_NewStringObj(nsPtr->fullName, -1);
listPtr = Tcl_NewListObj(objc, objv);
TclListObjSetElement(interp, listPtr, 0, nsObjPtr);
@@ -8864,7 +8864,7 @@ TclNRTailcallEval(
Interp *iPtr = (Interp *) interp;
Tcl_Obj *listPtr = (Tcl_Obj *)data[0], *nsObjPtr;
Tcl_Namespace *nsPtr;
- size_t objc;
+ Tcl_Size objc;
Tcl_Obj **objv;
TclListObjGetElementsM(interp, listPtr, &objc, &objv);
@@ -8968,7 +8968,7 @@ TclNRYieldObjCmd(
if (!corPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "yield can only be called in a coroutine", TCL_INDEX_NONE));
+ "yield can only be called in a coroutine", -1));
Tcl_SetErrorCode(interp, "TCL", "COROUTINE", "ILLEGAL_YIELD", NULL);
return TCL_ERROR;
}
@@ -9001,14 +9001,14 @@ TclNRYieldToObjCmd(
if (!corPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "yieldto can only be called in a coroutine", TCL_INDEX_NONE));
+ "yieldto can only be called in a coroutine", -1));
Tcl_SetErrorCode(interp, "TCL", "COROUTINE", "ILLEGAL_YIELD", NULL);
return TCL_ERROR;
}
if (((Namespace *) nsPtr)->flags & NS_DYING) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "yieldto called in deleted namespace", TCL_INDEX_NONE));
+ "yieldto called in deleted namespace", -1));
Tcl_SetErrorCode(interp, "TCL", "COROUTINE", "YIELDTO_IN_DELETED",
NULL);
return TCL_ERROR;
@@ -9021,7 +9021,7 @@ TclNRYieldToObjCmd(
*/
listPtr = Tcl_NewListObj(objc, objv);
- nsObjPtr = Tcl_NewStringObj(nsPtr->fullName, TCL_INDEX_NONE);
+ nsObjPtr = Tcl_NewStringObj(nsPtr->fullName, -1);
TclListObjSetElement(interp, listPtr, 0, nsObjPtr);
/*
@@ -9212,7 +9212,7 @@ TclNRCoroutineActivateCallback(
*/
corPtr->stackLevel = &corPtr;
- size_t numLevels = corPtr->auxNumLevels;
+ Tcl_Size numLevels = corPtr->auxNumLevels;
corPtr->auxNumLevels = iPtr->numLevels;
SAVE_CONTEXT(corPtr->caller);
@@ -9243,7 +9243,7 @@ TclNRCoroutineActivateCallback(
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "cannot yield: C stack busy", TCL_INDEX_NONE));
+ "cannot yield: C stack busy", -1));
Tcl_SetErrorCode(interp, "TCL", "COROUTINE", "CANT_YIELD",
NULL);
return TCL_ERROR;
@@ -9261,7 +9261,7 @@ TclNRCoroutineActivateCallback(
corPtr->yieldPtr = NULL;
corPtr->stackLevel = NULL;
- size_t numLevels = iPtr->numLevels;
+ Tcl_Size numLevels = iPtr->numLevels;
iPtr->numLevels = corPtr->auxNumLevels;
corPtr->auxNumLevels = numLevels - corPtr->auxNumLevels;
@@ -9288,7 +9288,7 @@ TclNREvalList(
Tcl_Interp *interp,
TCL_UNUSED(int) /*result*/)
{
- size_t objc;
+ Tcl_Size objc;
Tcl_Obj **objv;
Tcl_Obj *listPtr = (Tcl_Obj *)data[0];
@@ -9332,7 +9332,7 @@ CoroTypeObjCmd(
cmdPtr = (Command *) Tcl_GetCommandFromObj(interp, objv[1]);
if ((!cmdPtr) || (cmdPtr->nreProc != TclNRInterpCoroutine)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "can only get coroutine type of a coroutine", TCL_INDEX_NONE));
+ "can only get coroutine type of a coroutine", -1));
Tcl_SetErrorCode(interp, "TCL", "LOOKUP", "COROUTINE",
TclGetString(objv[1]), NULL);
return TCL_ERROR;
@@ -9345,7 +9345,7 @@ CoroTypeObjCmd(
corPtr = (CoroutineData *)cmdPtr->objClientData;
if (!COR_IS_SUSPENDED(corPtr)) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj("active", TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("active", -1));
return TCL_OK;
}
@@ -9356,14 +9356,14 @@ CoroTypeObjCmd(
switch (corPtr->nargs) {
case COROUTINE_ARGUMENTS_SINGLE_OPTIONAL:
- Tcl_SetObjResult(interp, Tcl_NewStringObj("yield", TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("yield", -1));
return TCL_OK;
case COROUTINE_ARGUMENTS_ARBITRARY:
- Tcl_SetObjResult(interp, Tcl_NewStringObj("yieldto", TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("yieldto", -1));
return TCL_OK;
default:
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "unknown coroutine type", TCL_INDEX_NONE));
+ "unknown coroutine type", -1));
Tcl_SetErrorCode(interp, "TCL", "COROUTINE", "BAD_TYPE", NULL);
return TCL_ERROR;
}
@@ -9392,7 +9392,7 @@ GetCoroutineFromObj(
Command *cmdPtr = (Command *) Tcl_GetCommandFromObj(interp, objPtr);
if ((!cmdPtr) || (cmdPtr->nreProc != TclNRInterpCoroutine)) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj(errMsg, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(errMsg, -1));
Tcl_SetErrorCode(interp, "TCL", "LOOKUP", "COROUTINE",
TclGetString(objPtr), NULL);
return NULL;
@@ -9426,7 +9426,7 @@ TclNRCoroInjectObjCmd(
}
if (!COR_IS_SUSPENDED(corPtr)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "can only inject a command into a suspended coroutine", TCL_INDEX_NONE));
+ "can only inject a command into a suspended coroutine", -1));
Tcl_SetErrorCode(interp, "TCL", "COROUTINE", "ACTIVE", NULL);
return TCL_ERROR;
}
@@ -9504,7 +9504,7 @@ TclNRCoroProbeObjCmd(
*/
corPtr->stackLevel = &corPtr;
- size_t numLevels = corPtr->auxNumLevels;
+ Tcl_Size numLevels = corPtr->auxNumLevels;
corPtr->auxNumLevels = iPtr->numLevels;
/*
@@ -9548,9 +9548,9 @@ InjectHandler(
{
CoroutineData *corPtr = (CoroutineData *)data[0];
Tcl_Obj *listPtr = (Tcl_Obj *)data[1];
- size_t nargs = PTR2INT(data[2]);
+ Tcl_Size nargs = PTR2INT(data[2]);
void *isProbe = data[3];
- size_t objc;
+ Tcl_Size objc;
Tcl_Obj **objv;
if (!isProbe) {
@@ -9595,7 +9595,7 @@ InjectHandlerPostCall(
{
CoroutineData *corPtr = (CoroutineData *)data[0];
Tcl_Obj *listPtr = (Tcl_Obj *)data[1];
- size_t nargs = PTR2INT(data[2]);
+ Tcl_Size nargs = PTR2INT(data[2]);
void *isProbe = data[3];
/*
@@ -9618,7 +9618,7 @@ InjectHandlerPostCall(
}
corPtr->nargs = nargs;
corPtr->stackLevel = NULL;
- size_t numLevels = iPtr->numLevels;
+ Tcl_Size numLevels = iPtr->numLevels;
iPtr->numLevels = corPtr->auxNumLevels;
corPtr->auxNumLevels = numLevels - corPtr->auxNumLevels;
iPtr->execEnvPtr = corPtr->callerEEPtr;
@@ -9663,7 +9663,7 @@ NRInjectObjCmd(
}
if (!COR_IS_SUSPENDED(corPtr)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "can only inject a command into a suspended coroutine", TCL_INDEX_NONE));
+ "can only inject a command into a suspended coroutine", -1));
Tcl_SetErrorCode(interp, "TCL", "COROUTINE", "ACTIVE", NULL);
return TCL_ERROR;
}
@@ -9714,10 +9714,10 @@ TclNRInterpCoroutine(
}
break;
default:
- if (corPtr->nargs + 1 != (size_t)objc) {
+ if (corPtr->nargs + 1 != objc) {
Tcl_SetObjResult(interp,
Tcl_NewStringObj("wrong coro nargs; how did we get here? "
- "not implemented!", TCL_INDEX_NONE));
+ "not implemented!", -1));
Tcl_SetErrorCode(interp, "TCL", "WRONGARGS", NULL);
return TCL_ERROR;
}
diff --git a/generic/tclBinary.c b/generic/tclBinary.c
index 1083533..0acbd87 100644
--- a/generic/tclBinary.c
+++ b/generic/tclBinary.c
@@ -22,8 +22,8 @@
* special conditions in the parsing of a format specifier.
*/
-#define BINARY_ALL ((size_t)-1) /* Use all elements in the argument. */
-#define BINARY_NOCOUNT ((size_t)-2) /* No count was specified in format. */
+#define BINARY_ALL -1 /* Use all elements in the argument. */
+#define BINARY_NOCOUNT -2 /* No count was specified in format. */
/*
* The following flags may be ORed together and returned by GetFormatSpec
@@ -61,10 +61,10 @@ static int FormatNumber(Tcl_Interp *interp, int type,
Tcl_Obj *src, unsigned char **cursorPtr);
static void FreeProperByteArrayInternalRep(Tcl_Obj *objPtr);
static int GetFormatSpec(const char **formatPtr, char *cmdPtr,
- size_t *countPtr, int *flagsPtr);
+ Tcl_Size *countPtr, int *flagsPtr);
static Tcl_Obj * ScanNumber(unsigned char *buffer, int type,
int flags, Tcl_HashTable **numberCachePtr);
-static int SetByteArrayFromAny(Tcl_Interp *interp, size_t limit,
+static int SetByteArrayFromAny(Tcl_Interp *interp, Tcl_Size limit,
Tcl_Obj *objPtr);
static void UpdateStringOfByteArray(Tcl_Obj *listPtr);
static void DeleteScanNumberCache(Tcl_HashTable *numberCachePtr);
@@ -174,18 +174,19 @@ static const Tcl_ObjType properByteArrayType = {
*/
typedef struct {
- size_t used; /* The number of bytes used in the byte
+ Tcl_Size used; /* The number of bytes used in the byte
* array. */
- size_t allocated; /* The amount of space actually allocated
+ Tcl_Size allocated; /* The amount of space actually allocated
* minus 1 byte. */
unsigned char bytes[TCLFLEXARRAY]; /* The array of bytes. The actual size of this
* field depends on the 'allocated' field
* above. */
} ByteArray;
+#define BYTEARRAY_MAX_LEN (TCL_SIZE_MAX - (Tcl_Size)offsetof(ByteArray, bytes))
#define BYTEARRAY_SIZE(len) \
- ( (offsetof(ByteArray, bytes) + (len) < offsetof(ByteArray, bytes)) \
- ? (Tcl_Panic("max size of a Tcl value exceeded"), 0) \
+ ( (len < 0 || BYTEARRAY_MAX_LEN < (len)) \
+ ? (Tcl_Panic("negative length specified or max size of a Tcl value exceeded"), 0) \
: (offsetof(ByteArray, bytes) + (len)) )
#define GET_BYTEARRAY(irPtr) ((ByteArray *) (irPtr)->twoPtrValue.ptr1)
#define SET_BYTEARRAY(irPtr, baPtr) \
@@ -222,7 +223,7 @@ Tcl_Obj *
Tcl_NewByteArrayObj(
const unsigned char *bytes, /* The array of bytes used to initialize the
* new object. */
- size_t numBytes) /* Number of bytes in the array */
+ Tcl_Size numBytes) /* Number of bytes in the array */
{
#ifdef TCL_MEM_DEBUG
return Tcl_DbNewByteArrayObj(bytes, numBytes, "unknown", 0);
@@ -265,7 +266,7 @@ Tcl_Obj *
Tcl_DbNewByteArrayObj(
const unsigned char *bytes, /* The array of bytes used to initialize the
* new object. */
- size_t numBytes, /* Number of bytes in the array */
+ Tcl_Size numBytes, /* Number of bytes in the array */
const char *file, /* The name of the source file calling this
* procedure; used for debugging. */
int line) /* Line number in the source file; used for
@@ -282,7 +283,7 @@ Tcl_Obj *
Tcl_DbNewByteArrayObj(
const unsigned char *bytes, /* The array of bytes used to initialize the
* new object. */
- size_t numBytes, /* Number of bytes in the array */
+ Tcl_Size numBytes, /* Number of bytes in the array */
TCL_UNUSED(const char *) /*file*/,
TCL_UNUSED(int) /*line*/)
{
@@ -313,7 +314,8 @@ Tcl_SetByteArrayObj(
Tcl_Obj *objPtr, /* Object to initialize as a ByteArray. */
const unsigned char *bytes, /* The array of bytes to use as the new value.
* May be NULL even if numBytes > 0. */
- size_t numBytes) /* Number of bytes in the array */
+ Tcl_Size numBytes) /* Number of bytes in the array.
+ * Must be >= 0 */
{
ByteArray *byteArrayPtr;
Tcl_ObjInternalRep ir;
@@ -323,6 +325,7 @@ Tcl_SetByteArrayObj(
}
TclInvalidateStringRep(objPtr);
+ assert(numBytes >= 0);
byteArrayPtr = (ByteArray *)Tcl_Alloc(BYTEARRAY_SIZE(numBytes));
byteArrayPtr->used = numBytes;
byteArrayPtr->allocated = numBytes;
@@ -357,7 +360,7 @@ unsigned char *
Tcl_GetBytesFromObj(
Tcl_Interp *interp, /* For error reporting */
Tcl_Obj *objPtr, /* Value to extract from */
- size_t *numBytesPtr) /* If non-NULL, write the number of bytes
+ Tcl_Size *numBytesPtr) /* If non-NULL, write the number of bytes
* in the array here */
{
ByteArray *baPtr;
@@ -385,7 +388,7 @@ TclGetBytesFromObj(
int *numBytesPtr) /* If non-NULL, write the number of bytes
* in the array here */
{
- size_t numBytes = 0;
+ Tcl_Size numBytes = 0;
unsigned char *bytes = Tcl_GetBytesFromObj(interp, objPtr, &numBytes);
if (bytes && numBytesPtr) {
@@ -395,7 +398,7 @@ TclGetBytesFromObj(
if (interp) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "byte sequence length exceeds INT_MAX", TCL_INDEX_NONE));
+ "byte sequence length exceeds INT_MAX", -1));
Tcl_SetErrorCode(interp, "TCL", "API", "OUTDATED", NULL);
}
return NULL;
@@ -431,11 +434,13 @@ TclGetBytesFromObj(
unsigned char *
Tcl_SetByteArrayLength(
Tcl_Obj *objPtr, /* The ByteArray object. */
- size_t numBytes) /* Number of bytes in resized array */
+ Tcl_Size numBytes) /* Number of bytes in resized array
+ * Must be >= 0 */
{
ByteArray *byteArrayPtr;
Tcl_ObjInternalRep *irPtr;
+ assert(numBytes >= 0);
if (Tcl_IsShared(objPtr)) {
Tcl_Panic("%s called with shared object", "Tcl_SetByteArrayLength");
}
@@ -466,8 +471,8 @@ Tcl_SetByteArrayLength(
* MakeByteArray --
*
* Generate a ByteArray internal rep from the string rep of objPtr.
- * The generated byte sequence may have no more than limit bytes. The
- * value of TCL_INDEX_NONE for limit indicates no limit imposed. If
+ * The generated byte sequence may have no more than limit bytes.
+ * A negative value for limit indicates no limit imposed. If
* boolean argument demandProper is true, then no byte sequence should
* be output to the caller (write NULL instead). When no bytes sequence
* is output and interp is not NULL, leave an error message and error
@@ -487,14 +492,13 @@ static int
MakeByteArray(
Tcl_Interp *interp,
Tcl_Obj *objPtr,
- size_t limit,
+ Tcl_Size limit,
int demandProper,
ByteArray **byteArrayPtrPtr)
{
- size_t length;
+ Tcl_Size length;
const char *src = Tcl_GetStringFromObj(objPtr, &length);
- size_t numBytes
- = (limit != TCL_INDEX_NONE && limit < length) ? limit : length;
+ Tcl_Size numBytes = (limit >= 0 && limit < length) ? limit : length;
ByteArray *byteArrayPtr = (ByteArray *)Tcl_Alloc(BYTEARRAY_SIZE(numBytes));
unsigned char *dst = byteArrayPtr->bytes;
unsigned char *dstEnd = dst + numBytes;
@@ -569,7 +573,7 @@ TclNarrowToBytes(
static int
SetByteArrayFromAny(
Tcl_Interp *interp, /* For error reporting. */
- size_t limit, /* Create no more than this many bytes */
+ Tcl_Size limit, /* Create no more than this many bytes */
Tcl_Obj *objPtr) /* The object to convert to type ByteArray. */
{
ByteArray *byteArrayPtr;
@@ -630,7 +634,7 @@ DupProperByteArrayInternalRep(
Tcl_Obj *srcPtr, /* Object with internal rep to copy. */
Tcl_Obj *copyPtr) /* Object with internal rep to set. */
{
- size_t length;
+ Tcl_Size length;
ByteArray *srcArrayPtr, *copyArrayPtr;
Tcl_ObjInternalRep ir;
@@ -671,8 +675,8 @@ UpdateStringOfByteArray(
const Tcl_ObjInternalRep *irPtr = TclFetchInternalRep(objPtr, &properByteArrayType);
ByteArray *byteArrayPtr = GET_BYTEARRAY(irPtr);
unsigned char *src = byteArrayPtr->bytes;
- size_t i, length = byteArrayPtr->used;
- size_t size = length;
+ Tcl_Size i, length = byteArrayPtr->used;
+ Tcl_Size size = length;
/*
* How much space will string rep need?
@@ -721,16 +725,16 @@ void
TclAppendBytesToByteArray(
Tcl_Obj *objPtr,
const unsigned char *bytes,
- size_t len)
+ Tcl_Size len)
{
ByteArray *byteArrayPtr;
- size_t needed;
+ Tcl_Size needed;
Tcl_ObjInternalRep *irPtr;
if (Tcl_IsShared(objPtr)) {
Tcl_Panic("%s called with shared object","TclAppendBytesToByteArray");
}
- if (len == TCL_INDEX_NONE) {
+ if (len < 0) {
Tcl_Panic("%s must be called with definite number of bytes to append",
"TclAppendBytesToByteArray");
}
@@ -755,11 +759,11 @@ TclAppendBytesToByteArray(
* If we need to, resize the allocated space in the byte array.
*/
- needed = byteArrayPtr->used + len;
- if (needed < byteArrayPtr->used) {
- /* Wrapped around SIZE_MAX!! */
- Tcl_Panic("max size of a Tcl value exceeded");
+ if ((BYTEARRAY_MAX_LEN - byteArrayPtr->used) < len) {
+ /* Will wrap around !! */
+ Tcl_Panic("max size of a byte array exceeded");
}
+ needed = byteArrayPtr->used + len;
if (needed > byteArrayPtr->allocated) {
ByteArray *ptr = NULL;
@@ -767,22 +771,25 @@ TclAppendBytesToByteArray(
* Try to allocate double the total space that is needed.
*/
- size_t attempt = 2 * needed;
-
- /* Protection just in case we wrapped around SIZE_MAX */
- if (attempt >= needed) {
+ Tcl_Size attempt;
+
+ /* Make sure we do not wrap when doubling */
+ if (needed <= (BYTEARRAY_MAX_LEN - needed)) {
+ attempt = 2 * needed;
ptr = (ByteArray *) Tcl_AttemptRealloc(byteArrayPtr,
BYTEARRAY_SIZE(attempt));
}
+
if (ptr == NULL) {
/*
- * Try to allocate double the increment that is needed (plus).
+ * Try to allocate double the increment that is needed.
+ * (Originally TCL_MIN_GROWTH was added as well but that would
+ * need one more separate overflow check so forget it.)
*/
-
- attempt = needed + len + TCL_MIN_GROWTH;
- if (attempt >= needed) {
- ptr = (ByteArray *) Tcl_AttemptRealloc(byteArrayPtr,
- BYTEARRAY_SIZE(attempt));
+ if (len <= (BYTEARRAY_MAX_LEN - needed)) {
+ attempt = needed + len;
+ ptr = (ByteArray *)Tcl_AttemptRealloc(byteArrayPtr,
+ BYTEARRAY_SIZE(attempt));
}
}
if (ptr == NULL) {
@@ -861,7 +868,7 @@ BinaryFormatCmd(
int value = 0; /* Current integer value to be packed.
* Initialized to avoid compiler warning. */
char cmd; /* Current format character. */
- size_t count; /* Count associated with current format
+ Tcl_Size count; /* Count associated with current format
* character. */
int flags; /* Format field flags */
const char *format; /* Pointer to current position in format
@@ -873,7 +880,7 @@ BinaryFormatCmd(
* cursor has visited.*/
const char *errorString;
const char *errorValue, *str;
- size_t offset, size, length;
+ Tcl_Size offset, size, length;
if (objc < 2) {
Tcl_WrongNumArgs(interp, 1, objv, "formatString ?arg ...?");
@@ -971,7 +978,7 @@ BinaryFormatCmd(
arg++;
count = 1;
} else {
- size_t listc;
+ Tcl_Size listc;
Tcl_Obj **listv;
/*
@@ -1003,7 +1010,7 @@ BinaryFormatCmd(
case 'x':
if (count == BINARY_ALL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "cannot use \"*\" in format string with \"x\"", TCL_INDEX_NONE));
+ "cannot use \"*\" in format string with \"x\"", -1));
return TCL_ERROR;
} else if (count == BINARY_NOCOUNT) {
count = 1;
@@ -1253,7 +1260,7 @@ BinaryFormatCmd(
case 'q':
case 'Q':
case 'f': {
- size_t listc, i;
+ Tcl_Size listc, i;
Tcl_Obj **listv;
if (count == BINARY_NOCOUNT) {
@@ -1294,7 +1301,7 @@ BinaryFormatCmd(
if (count == BINARY_NOCOUNT) {
count = 1;
}
- if ((count == BINARY_ALL) || (count > (size_t)(cursor - buffer))) {
+ if ((count == BINARY_ALL) || (count > (cursor - buffer))) {
cursor = buffer;
} else {
cursor -= count;
@@ -1343,7 +1350,7 @@ BinaryFormatCmd(
}
error:
- Tcl_SetObjResult(interp, Tcl_NewStringObj(errorString, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(errorString, -1));
return TCL_ERROR;
}
@@ -1374,7 +1381,7 @@ BinaryScanCmd(
int value = 0; /* Current integer value to be packed.
* Initialized to avoid compiler warning. */
char cmd; /* Current format character. */
- size_t count; /* Count associated with current format
+ Tcl_Size count; /* Count associated with current format
* character. */
int flags; /* Format field flags */
const char *format; /* Pointer to current position in format
@@ -1383,7 +1390,7 @@ BinaryScanCmd(
unsigned char *buffer; /* Start of result buffer. */
const char *errorString;
const char *str;
- size_t offset, size, length = 0, i;
+ Tcl_Size offset, size, length = 0, i;
Tcl_Obj *valuePtr, *elementPtr;
Tcl_HashTable numberCacheHash;
@@ -1492,7 +1499,7 @@ BinaryScanCmd(
if (count == BINARY_NOCOUNT) {
count = 1;
}
- if (count > (size_t)(length - offset) * 8) {
+ if (count > (length - offset) * 8) {
goto done;
}
}
@@ -1623,7 +1630,7 @@ BinaryScanCmd(
goto badIndex;
}
if (count == BINARY_NOCOUNT) {
- if (length < (size_t)size + offset) {
+ if (length < size + offset) {
goto done;
}
valuePtr = ScanNumber(buffer+offset, cmd, flags,
@@ -1724,7 +1731,7 @@ BinaryScanCmd(
}
error:
- Tcl_SetObjResult(interp, Tcl_NewStringObj(errorString, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(errorString, -1));
return TCL_ERROR;
}
@@ -1753,7 +1760,7 @@ static int
GetFormatSpec(
const char **formatPtr, /* Pointer to format string. */
char *cmdPtr, /* Pointer to location of command char. */
- size_t *countPtr, /* Pointer to repeat count value. */
+ Tcl_Size *countPtr, /* Pointer to repeat count value. */
int *flagsPtr) /* Pointer to field flags */
{
/*
@@ -2457,7 +2464,7 @@ BinaryEncodeHex(
Tcl_Obj *resultObj = NULL;
unsigned char *data = NULL;
unsigned char *cursor = NULL;
- size_t offset = 0, count = 0;
+ Tcl_Size offset = 0, count = 0;
if (objc != 2) {
Tcl_WrongNumArgs(interp, 1, objv, "data");
@@ -2506,7 +2513,7 @@ BinaryDecodeHex(
unsigned char *data, *datastart, *dataend;
unsigned char *begin, *cursor, c;
int i, index, value, pure = 1, strict = 0;
- size_t size, cut = 0, count = 0;
+ Tcl_Size size, cut = 0, count = 0;
int ucs4;
enum {OPT_STRICT };
static const char *const optStrings[] = { "-strict", NULL };
@@ -2631,9 +2638,9 @@ BinaryEncode64(
unsigned char *data, *limit;
int maxlen = 0;
const char *wrapchar = "\n";
- size_t wrapcharlen = 1;
+ Tcl_Size wrapcharlen = 1;
int i, index, size, outindex = 0, purewrap = 1;
- size_t offset, count = 0;
+ Tcl_Size offset, count = 0;
enum { OPT_MAXLEN, OPT_WRAPCHAR };
static const char *const optStrings[] = { "-maxlen", "-wrapchar", NULL };
@@ -2654,7 +2661,7 @@ BinaryEncode64(
}
if (maxlen < 0) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "line length out of range", TCL_INDEX_NONE));
+ "line length out of range", -1));
Tcl_SetErrorCode(interp, "TCL", "BINARY", "ENCODE",
"LINE_LENGTH", NULL);
return TCL_ERROR;
@@ -2760,7 +2767,7 @@ BinaryEncodeUu(
int lineLength = 61;
const unsigned char SingleNewline[] = { UCHAR('\n') };
const unsigned char *wrapchar = SingleNewline;
- size_t j, offset, count = 0, wrapcharlen = sizeof(SingleNewline);
+ Tcl_Size j, offset, count = 0, wrapcharlen = sizeof(SingleNewline);
enum { OPT_MAXLEN, OPT_WRAPCHAR };
static const char *const optStrings[] = { "-maxlen", "-wrapchar", NULL };
@@ -2782,7 +2789,7 @@ BinaryEncodeUu(
}
if (lineLength < 5 || lineLength > 85) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "line length out of range", TCL_INDEX_NONE));
+ "line length out of range", -1));
Tcl_SetErrorCode(interp, "TCL", "BINARY", "ENCODE",
"LINE_LENGTH", NULL);
return TCL_ERROR;
@@ -2794,7 +2801,7 @@ BinaryEncodeUu(
objv[i + 1], &wrapcharlen);
{
const unsigned char *p = wrapchar;
- size_t numBytes = wrapcharlen;
+ Tcl_Size numBytes = wrapcharlen;
while (numBytes) {
switch (*p) {
@@ -2909,7 +2916,7 @@ BinaryDecodeUu(
unsigned char *data, *datastart, *dataend;
unsigned char *begin, *cursor;
int i, index, pure = 1, strict = 0, lineLen;
- size_t size, count = 0;
+ Tcl_Size size, count = 0;
unsigned char c;
int ucs4;
enum { OPT_STRICT };
@@ -3085,7 +3092,7 @@ BinaryDecode64(
unsigned char *cursor = NULL;
int pure = 1, strict = 0;
int i, index, cut = 0;
- size_t size, count = 0;
+ Tcl_Size size, count = 0;
int ucs4;
enum { OPT_STRICT };
static const char *const optStrings[] = { "-strict", NULL };
diff --git a/generic/tclCkalloc.c b/generic/tclCkalloc.c
index 6f31940..f7cab9f 100644
--- a/generic/tclCkalloc.c
+++ b/generic/tclCkalloc.c
@@ -189,7 +189,7 @@ TclDumpMemoryInfo(
fprintf((FILE *)clientData, "%s", buf);
} else {
/* Assume objPtr to append to */
- Tcl_AppendToObj((Tcl_Obj *) clientData, buf, TCL_INDEX_NONE);
+ Tcl_AppendToObj((Tcl_Obj *) clientData, buf, -1);
}
return 1;
}
diff --git a/generic/tclClock.c b/generic/tclClock.c
index 1d33886..4d82082 100644
--- a/generic/tclClock.c
+++ b/generic/tclClock.c
@@ -143,17 +143,17 @@ TCL_DECLARE_MUTEX(clockMutex)
static int ConvertUTCToLocal(Tcl_Interp *,
TclDateFields *, Tcl_Obj *, int);
static int ConvertUTCToLocalUsingTable(Tcl_Interp *,
- TclDateFields *, size_t, Tcl_Obj *const[]);
+ TclDateFields *, Tcl_Size, Tcl_Obj *const[]);
static int ConvertUTCToLocalUsingC(Tcl_Interp *,
TclDateFields *, int);
static int ConvertLocalToUTC(Tcl_Interp *,
TclDateFields *, Tcl_Obj *, int);
static int ConvertLocalToUTCUsingTable(Tcl_Interp *,
- TclDateFields *, size_t, Tcl_Obj *const[]);
+ TclDateFields *, Tcl_Size, Tcl_Obj *const[]);
static int ConvertLocalToUTCUsingC(Tcl_Interp *,
TclDateFields *, int);
static Tcl_Obj * LookupLastTransition(Tcl_Interp *, Tcl_WideInt,
- size_t, Tcl_Obj *const *);
+ Tcl_Size, Tcl_Obj *const *);
static void GetYearWeekDay(TclDateFields *, int);
static void GetGregorianEraYearDay(TclDateFields *, int);
static void GetMonthDay(TclDateFields *);
@@ -728,7 +728,7 @@ ConvertLocalToUTC(
Tcl_Obj *tzdata, /* Time zone data */
int changeover) /* Julian Day of the Gregorian transition */
{
- size_t rowc; /* Number of rows in tzdata */
+ Tcl_Size rowc; /* Number of rows in tzdata */
Tcl_Obj **rowv; /* Pointers to the rows */
/*
@@ -773,11 +773,11 @@ static int
ConvertLocalToUTCUsingTable(
Tcl_Interp *interp, /* Tcl interpreter */
TclDateFields *fields, /* Time to convert, with 'seconds' filled in */
- size_t rowc, /* Number of points at which time changes */
+ Tcl_Size rowc, /* Number of points at which time changes */
Tcl_Obj *const rowv[]) /* Points at which time changes */
{
Tcl_Obj *row;
- size_t cellc;
+ Tcl_Size cellc;
Tcl_Obj **cellv;
int have[8];
int nHave = 0;
@@ -931,7 +931,7 @@ ConvertUTCToLocal(
Tcl_Obj *tzdata, /* Time zone data */
int changeover) /* Julian Day of the Gregorian transition */
{
- size_t rowc; /* Number of rows in tzdata */
+ Tcl_Size rowc; /* Number of rows in tzdata */
Tcl_Obj **rowv; /* Pointers to the rows */
/*
@@ -976,12 +976,12 @@ static int
ConvertUTCToLocalUsingTable(
Tcl_Interp *interp, /* Tcl interpreter */
TclDateFields *fields, /* Fields of the date */
- size_t rowc, /* Number of rows in the conversion table
+ Tcl_Size rowc, /* Number of rows in the conversion table
* (>= 1) */
Tcl_Obj *const rowv[]) /* Rows of the conversion table */
{
Tcl_Obj *row; /* Row containing the current information */
- size_t cellc; /* Count of cells in the row (must be 4) */
+ Tcl_Size cellc; /* Count of cells in the row (must be 4) */
Tcl_Obj **cellv; /* Pointers to the cells */
/*
@@ -1116,11 +1116,11 @@ static Tcl_Obj *
LookupLastTransition(
Tcl_Interp *interp, /* Interpreter for error messages */
Tcl_WideInt tick, /* Time from the epoch */
- size_t rowc, /* Number of rows of tzdata */
+ Tcl_Size rowc, /* Number of rows of tzdata */
Tcl_Obj *const *rowv) /* Rows in tzdata */
{
- size_t l;
- size_t u;
+ Tcl_Size l;
+ Tcl_Size u;
Tcl_Obj *compObj;
Tcl_WideInt compVal;
diff --git a/generic/tclCmdAH.c b/generic/tclCmdAH.c
index 5dbadb8..b2b1a61 100644
--- a/generic/tclCmdAH.c
+++ b/generic/tclCmdAH.c
@@ -30,11 +30,11 @@ struct ForeachState {
int bodyIdx; /* The argument index of the body. */
int j, maxj; /* Number of loop iterations. */
int numLists; /* Count of value lists. */
- size_t *index; /* Array of value list indices. */
- size_t *varcList; /* # loop variables per list. */
+ Tcl_Size *index; /* Array of value list indices. */
+ Tcl_Size *varcList; /* # loop variables per list. */
Tcl_Obj ***varvList; /* Array of var name lists. */
Tcl_Obj **vCopyList; /* Copies of var name list arguments. */
- size_t *argcList; /* Array of value list sizes. */
+ Tcl_Size *argcList; /* Array of value list sizes. */
Tcl_Obj ***argvList; /* Array of value lists. */
Tcl_Obj **aCopyList; /* Copies of value list arguments. */
Tcl_Obj *resultList; /* List of result values from the loop body,
@@ -530,7 +530,7 @@ EncodingConvertfromObjCmd(
Tcl_Obj *data; /* Byte array to convert */
Tcl_DString ds; /* Buffer to hold the string */
Tcl_Encoding encoding; /* Encoding to use */
- size_t length = 0; /* Length of the byte array being converted */
+ Tcl_Size length = 0; /* Length of the byte array being converted */
const char *bytesPtr; /* Pointer to the first byte of the array */
int flags;
int result;
@@ -630,7 +630,7 @@ EncodingConverttoObjCmd(
Tcl_Obj *data; /* String to convert */
Tcl_DString ds; /* Buffer to hold the byte array */
Tcl_Encoding encoding; /* Encoding to use */
- size_t length; /* Length of the string being converted */
+ Tcl_Size length; /* Length of the string being converted */
const char *stringPtr; /* Pointer to the first byte of the string */
int result;
int flags;
@@ -2064,7 +2064,7 @@ PathSplitCmd(
Tcl_WrongNumArgs(interp, 1, objv, "name");
return TCL_ERROR;
}
- res = Tcl_FSSplitPath(objv[1], (size_t *)NULL);
+ res = Tcl_FSSplitPath(objv[1], NULL);
if (res == NULL) {
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
"could not read \"%s\": no such file or directory",
@@ -2757,16 +2757,16 @@ EachloopCmd(
*/
statePtr = (struct ForeachState *)TclStackAlloc(interp,
- sizeof(struct ForeachState) + 3 * numLists * sizeof(size_t)
+ sizeof(struct ForeachState) + 3 * numLists * sizeof(Tcl_Size)
+ 2 * numLists * (sizeof(Tcl_Obj **) + sizeof(Tcl_Obj *)));
memset(statePtr, 0,
- sizeof(struct ForeachState) + 3 * numLists * sizeof(size_t)
+ sizeof(struct ForeachState) + 3 * numLists * sizeof(Tcl_Size)
+ 2 * numLists * (sizeof(Tcl_Obj **) + sizeof(Tcl_Obj *)));
statePtr->varvList = (Tcl_Obj ***) (statePtr + 1);
statePtr->argvList = statePtr->varvList + numLists;
statePtr->vCopyList = (Tcl_Obj **) (statePtr->argvList + numLists);
statePtr->aCopyList = statePtr->vCopyList + numLists;
- statePtr->index = (size_t *) (statePtr->aCopyList + numLists);
+ statePtr->index = (Tcl_Size *) (statePtr->aCopyList + numLists);
statePtr->varcList = statePtr->index + numLists;
statePtr->argcList = statePtr->varcList + numLists;
@@ -2946,7 +2946,7 @@ ForeachAssignments(
struct ForeachState *statePtr)
{
int i;
- size_t v, k;
+ Tcl_Size v, k;
Tcl_Obj *valuePtr, *varValuePtr;
for (i=0 ; i<statePtr->numLists ; i++) {
diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c
index 92014bd..b72c3f5 100644
--- a/generic/tclCmdIL.c
+++ b/generic/tclCmdIL.c
@@ -51,7 +51,7 @@ typedef struct SortElement {
*/
typedef int (*SortStrCmpFn_t) (const char *, const char *);
-typedef int (*SortMemCmpFn_t) (const void *, const void *, size_t);
+typedef int (*SortMemCmpFn_t) (const void *, const void *, Tcl_Size);
/*
* The "lsort" command needs to pass certain information down to the function
@@ -74,7 +74,7 @@ typedef struct {
* NULL if no indexes supplied, and points to
* singleIndex field when only one
* supplied. */
- size_t indexc; /* Number of indexes in indexv array. */
+ Tcl_Size indexc; /* Number of indexes in indexv array. */
int singleIndex; /* Static space for common index case. */
int unique;
int numElements;
@@ -504,7 +504,7 @@ InfoArgsCmd(
localPtr = localPtr->nextPtr) {
if (TclIsVarArgument(localPtr)) {
Tcl_ListObjAppendElement(interp, listObjPtr,
- Tcl_NewStringObj(localPtr->name, TCL_INDEX_NONE));
+ Tcl_NewStringObj(localPtr->name, -1));
}
}
Tcl_SetObjResult(interp, listObjPtr);
@@ -541,7 +541,7 @@ InfoBodyCmd(
Interp *iPtr = (Interp *) interp;
const char *name, *bytes;
Proc *procPtr;
- size_t numBytes;
+ Tcl_Size numBytes;
if (objc != 2) {
Tcl_WrongNumArgs(interp, 1, objv, "procname");
@@ -651,7 +651,7 @@ InfoCommandsCmd(
Tcl_Obj *listPtr, *elemObjPtr;
int specificNsInPattern = 0;/* Init. to avoid compiler warning. */
Tcl_Command cmd;
- size_t i;
+ Tcl_Size i;
/*
* Get the pattern and find the "effective namespace" in which to list
@@ -716,7 +716,7 @@ InfoCommandsCmd(
Tcl_GetCommandFullName(interp, cmd, elemObjPtr);
} else {
cmdName = (const char *)Tcl_GetHashKey(&nsPtr->cmdTable, entryPtr);
- elemObjPtr = Tcl_NewStringObj(cmdName, TCL_INDEX_NONE);
+ elemObjPtr = Tcl_NewStringObj(cmdName, -1);
}
Tcl_ListObjAppendElement(interp, listPtr, elemObjPtr);
Tcl_SetObjResult(interp, listPtr);
@@ -744,7 +744,7 @@ InfoCommandsCmd(
if (entryPtr != NULL) {
cmdName = (const char *)Tcl_GetHashKey(tablePtr, entryPtr);
Tcl_ListObjAppendElement(interp, listPtr,
- Tcl_NewStringObj(cmdName, TCL_INDEX_NONE));
+ Tcl_NewStringObj(cmdName, -1));
Tcl_SetObjResult(interp, listPtr);
return TCL_OK;
}
@@ -766,7 +766,7 @@ InfoCommandsCmd(
elemObjPtr = Tcl_NewObj();
Tcl_GetCommandFullName(interp, cmd, elemObjPtr);
} else {
- elemObjPtr = Tcl_NewStringObj(cmdName, TCL_INDEX_NONE);
+ elemObjPtr = Tcl_NewStringObj(cmdName, -1);
}
Tcl_ListObjAppendElement(interp, listPtr, elemObjPtr);
}
@@ -789,7 +789,7 @@ InfoCommandsCmd(
|| Tcl_StringMatch(cmdName, simplePattern)) {
if (Tcl_FindHashEntry(&nsPtr->cmdTable,cmdName) == NULL) {
Tcl_ListObjAppendElement(interp, listPtr,
- Tcl_NewStringObj(cmdName, TCL_INDEX_NONE));
+ Tcl_NewStringObj(cmdName, -1));
}
}
entryPtr = Tcl_NextHashEntry(&search);
@@ -818,7 +818,7 @@ InfoCommandsCmd(
cmdName = (const char *)Tcl_GetHashKey(&nsPtr->cmdTable, entryPtr);
if ((simplePattern == NULL)
|| Tcl_StringMatch(cmdName, simplePattern)) {
- elemObjPtr = Tcl_NewStringObj(cmdName, TCL_INDEX_NONE);
+ elemObjPtr = Tcl_NewStringObj(cmdName, -1);
Tcl_ListObjAppendElement(interp, listPtr, elemObjPtr);
(void) Tcl_CreateHashEntry(&addedCommandsTable,
elemObjPtr, &isNew);
@@ -844,7 +844,7 @@ InfoCommandsCmd(
cmdName = (const char *)Tcl_GetHashKey(&pathNsPtr->cmdTable, entryPtr);
if ((simplePattern == NULL)
|| Tcl_StringMatch(cmdName, simplePattern)) {
- elemObjPtr = Tcl_NewStringObj(cmdName, TCL_INDEX_NONE);
+ elemObjPtr = Tcl_NewStringObj(cmdName, -1);
(void) Tcl_CreateHashEntry(&addedCommandsTable,
elemObjPtr, &isNew);
if (isNew) {
@@ -871,7 +871,7 @@ InfoCommandsCmd(
cmdName = (const char *)Tcl_GetHashKey(&globalNsPtr->cmdTable, entryPtr);
if ((simplePattern == NULL)
|| Tcl_StringMatch(cmdName, simplePattern)) {
- elemObjPtr = Tcl_NewStringObj(cmdName, TCL_INDEX_NONE);
+ elemObjPtr = Tcl_NewStringObj(cmdName, -1);
if (Tcl_FindHashEntry(&addedCommandsTable,
(char *) elemObjPtr) == NULL) {
Tcl_ListObjAppendElement(interp, listPtr, elemObjPtr);
@@ -1291,7 +1291,7 @@ TclInfoFrame(
* str.
*/
- ADD_PAIR("type", Tcl_NewStringObj(typeString[framePtr->type], TCL_INDEX_NONE));
+ ADD_PAIR("type", Tcl_NewStringObj(typeString[framePtr->type], -1));
if (framePtr->line) {
ADD_PAIR("line", Tcl_NewWideIntObj(framePtr->line[0]));
} else {
@@ -1305,7 +1305,7 @@ TclInfoFrame(
* Precompiled. Result contains the type as signal, nothing else.
*/
- ADD_PAIR("type", Tcl_NewStringObj(typeString[framePtr->type], TCL_INDEX_NONE));
+ ADD_PAIR("type", Tcl_NewStringObj(typeString[framePtr->type], -1));
break;
case TCL_LOCATION_BC: {
@@ -1330,7 +1330,7 @@ TclInfoFrame(
* Possibly modified: type, path!
*/
- ADD_PAIR("type", Tcl_NewStringObj(typeString[fPtr->type], TCL_INDEX_NONE));
+ ADD_PAIR("type", Tcl_NewStringObj(typeString[fPtr->type], -1));
if (fPtr->line) {
ADD_PAIR("line", Tcl_NewWideIntObj(fPtr->line[0]));
}
@@ -1358,7 +1358,7 @@ TclInfoFrame(
* Evaluation of a script file.
*/
- ADD_PAIR("type", Tcl_NewStringObj(typeString[framePtr->type], TCL_INDEX_NONE));
+ ADD_PAIR("type", Tcl_NewStringObj(typeString[framePtr->type], -1));
ADD_PAIR("line", Tcl_NewWideIntObj(framePtr->line[0]));
ADD_PAIR("file", framePtr->data.eval.path);
@@ -1396,7 +1396,7 @@ TclInfoFrame(
ADD_PAIR("proc", procNameObj);
} else if (procPtr->cmdPtr->clientData) {
ExtraFrameInfo *efiPtr = (ExtraFrameInfo *)procPtr->cmdPtr->clientData;
- size_t i;
+ Tcl_Size i;
/*
* This is a non-standard command. Luckily, it's told us how to
@@ -1404,7 +1404,7 @@ TclInfoFrame(
*/
for (i=0 ; i<efiPtr->length ; i++) {
- lv[lc++] = Tcl_NewStringObj(efiPtr->fields[i].name, TCL_INDEX_NONE);
+ lv[lc++] = Tcl_NewStringObj(efiPtr->fields[i].name, -1);
if (efiPtr->fields[i].proc) {
lv[lc++] =
efiPtr->fields[i].proc(efiPtr->fields[i].clientData);
@@ -1492,7 +1492,7 @@ InfoFunctionsCmd(
" }\n"
" }\n"
" ::return $cmds\n"
-" } [::namespace current]] ", TCL_INDEX_NONE);
+" } [::namespace current]] ", -1);
if (objc == 2) {
Tcl_Obj *arg = Tcl_NewListObj(1, &(objv[1]));
@@ -1545,12 +1545,12 @@ InfoHostnameCmd(
name = Tcl_GetHostName();
if (name) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj(name, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(name, -1));
return TCL_OK;
}
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "unable to determine name of host", TCL_INDEX_NONE));
+ "unable to determine name of host", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "HOSTNAME", "UNKNOWN", NULL);
return TCL_ERROR;
}
@@ -1665,12 +1665,12 @@ InfoLibraryCmd(
libDirName = Tcl_GetVar2(interp, "tcl_library", NULL, TCL_GLOBAL_ONLY);
if (libDirName != NULL) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj(libDirName, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(libDirName, -1));
return TCL_OK;
}
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "no library has been specified for Tcl", TCL_INDEX_NONE));
+ "no library has been specified for Tcl", -1));
Tcl_SetErrorCode(interp, "TCL", "LOOKUP", "VARIABLE", "tcl_library",NULL);
return TCL_ERROR;
}
@@ -1797,7 +1797,7 @@ InfoPatchLevelCmd(
patchlevel = Tcl_GetVar2(interp, "tcl_patchLevel", NULL,
(TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG));
if (patchlevel != NULL) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj(patchlevel, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(patchlevel, -1));
return TCL_OK;
}
return TCL_ERROR;
@@ -1910,7 +1910,7 @@ InfoProcsCmd(
Tcl_GetCommandFullName(interp, (Tcl_Command) cmdPtr,
elemObjPtr);
} else {
- elemObjPtr = Tcl_NewStringObj(simplePattern, TCL_INDEX_NONE);
+ elemObjPtr = Tcl_NewStringObj(simplePattern, -1);
}
Tcl_ListObjAppendElement(interp, listPtr, elemObjPtr);
}
@@ -1938,7 +1938,7 @@ InfoProcsCmd(
Tcl_GetCommandFullName(interp, (Tcl_Command) cmdPtr,
elemObjPtr);
} else {
- elemObjPtr = Tcl_NewStringObj(cmdName, TCL_INDEX_NONE);
+ elemObjPtr = Tcl_NewStringObj(cmdName, -1);
}
Tcl_ListObjAppendElement(interp, listPtr, elemObjPtr);
}
@@ -1977,7 +1977,7 @@ InfoProcsCmd(
if (TclIsProc(cmdPtr) || ((realCmdPtr != NULL)
&& TclIsProc(realCmdPtr))) {
Tcl_ListObjAppendElement(interp, listPtr,
- Tcl_NewStringObj(cmdName, TCL_INDEX_NONE));
+ Tcl_NewStringObj(cmdName, -1));
}
}
}
@@ -2075,7 +2075,7 @@ InfoSharedlibCmd(
}
#ifdef TCL_SHLIB_EXT
- Tcl_SetObjResult(interp, Tcl_NewStringObj(TCL_SHLIB_EXT, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(TCL_SHLIB_EXT, -1));
#endif
return TCL_OK;
}
@@ -2172,7 +2172,7 @@ InfoCmdTypeCmd(
Tcl_AppendResult(interp, "native", NULL);
} else {
Tcl_SetObjResult(interp,
- Tcl_NewStringObj(TclGetCommandTypeName(command), TCL_INDEX_NONE));
+ Tcl_NewStringObj(TclGetCommandTypeName(command), -1));
}
return TCL_OK;
}
@@ -2201,7 +2201,7 @@ Tcl_JoinObjCmd(
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* The argument objects. */
{
- size_t length, listLen;
+ Tcl_Size length, listLen;
int isArithSeries = 0;
Tcl_Obj *resObjPtr = NULL, *joinObjPtr, **elemPtrs;
@@ -2250,7 +2250,7 @@ Tcl_JoinObjCmd(
if (length == 0) {
resObjPtr = TclStringCat(interp, listLen, elemPtrs, 0);
} else {
- size_t i;
+ Tcl_Size i;
resObjPtr = Tcl_NewObj();
if (isArithSeries) {
@@ -2325,7 +2325,7 @@ Tcl_LassignObjCmd(
{
Tcl_Obj *listCopyPtr;
Tcl_Obj **listObjv; /* The contents of the list. */
- size_t listObjc; /* The length of the list. */
+ Tcl_Size listObjc; /* The length of the list. */
int code = TCL_OK;
if (objc < 2) {
@@ -2456,7 +2456,7 @@ Tcl_LinsertObjCmd(
Tcl_Obj *const objv[]) /* Argument objects. */
{
Tcl_Obj *listPtr;
- size_t len, index;
+ Tcl_Size len, index;
int result;
if (objc < 3) {
@@ -2479,7 +2479,7 @@ Tcl_LinsertObjCmd(
if (result != TCL_OK) {
return result;
}
- if (index + 1 > len + 1) {
+ if (index > len) {
index = len;
}
@@ -2575,7 +2575,7 @@ Tcl_LlengthObjCmd(
Tcl_Obj *const objv[])
/* Argument objects. */
{
- size_t listLen;
+ Tcl_Size listLen;
int result;
Tcl_Obj *objPtr;
@@ -2624,7 +2624,7 @@ Tcl_LpopObjCmd(
Tcl_Obj *const objv[])
/* Argument objects. */
{
- size_t listLen;
+ Tcl_Size listLen;
int result;
Tcl_Obj *elemPtr, *stored;
Tcl_Obj *listPtr, **elemPtrs;
@@ -2653,7 +2653,7 @@ Tcl_LpopObjCmd(
if (!listLen) {
/* empty list, throw the same error as with index "end" */
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "index \"end\" out of range", TCL_INDEX_NONE));
+ "index \"end\" out of range", -1));
Tcl_SetErrorCode(interp, "TCL", "VALUE", "INDEX"
"OUTOFRANGE", NULL);
return TCL_ERROR;
@@ -2727,7 +2727,7 @@ Tcl_LrangeObjCmd(
/* Argument objects. */
{
int result;
- size_t listLen, first, last;
+ Tcl_Size listLen, first, last;
if (objc != 4) {
Tcl_WrongNumArgs(interp, 1, objv, "list first last");
return TCL_ERROR;
@@ -2786,8 +2786,8 @@ LremoveIndexCompare(
const void *el1Ptr,
const void *el2Ptr)
{
- size_t idx1 = *((const size_t *) el1Ptr);
- size_t idx2 = *((const size_t *) el2Ptr);
+ Tcl_Size idx1 = *((const Tcl_Size *) el1Ptr);
+ Tcl_Size idx2 = *((const Tcl_Size *) el2Ptr);
/*
* This will put the larger element first.
@@ -2803,8 +2803,8 @@ Tcl_LremoveObjCmd(
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
{
- int i, idxc, prevIdx, first, num;
- size_t *idxv, listLen;
+ Tcl_Size i, idxc, prevIdx, first, num;
+ Tcl_Size *idxv, listLen;
Tcl_Obj *listObj;
/*
@@ -2826,7 +2826,7 @@ Tcl_LremoveObjCmd(
Tcl_SetObjResult(interp, listObj);
return TCL_OK;
}
- idxv = (size_t *)Tcl_Alloc((objc - 2) * sizeof(size_t));
+ idxv = (Tcl_Size *)Tcl_Alloc((objc - 2) * sizeof(*idxv));
for (i = 2; i < objc; i++) {
if (TclGetIntForIndexM(interp, objv[i], /*endValue*/ listLen - 1,
&idxv[i - 2]) != TCL_OK) {
@@ -2841,7 +2841,7 @@ Tcl_LremoveObjCmd(
*/
if (idxc > 1) {
- qsort(idxv, idxc, sizeof(size_t), LremoveIndexCompare);
+ qsort(idxv, idxc, sizeof(*idxv), LremoveIndexCompare);
}
/*
@@ -2854,7 +2854,7 @@ Tcl_LremoveObjCmd(
num = 0;
first = listLen;
for (i = 0, prevIdx = -1 ; i < idxc ; i++) {
- int idx = idxv[i];
+ Tcl_Size idx = idxv[i];
/*
* Repeated index and sanity check.
@@ -2864,7 +2864,7 @@ Tcl_LremoveObjCmd(
continue;
}
prevIdx = idx;
- if (idx < 0 || idx >= (int)listLen) {
+ if (idx < 0 || idx >= listLen) {
continue;
}
@@ -2955,9 +2955,9 @@ Tcl_LrepeatObjCmd(
/* Final sanity check. Do not exceed limits on max list length. */
- if (elementCount && (size_t)objc > LIST_MAX/elementCount) {
+ if (elementCount && objc > LIST_MAX/elementCount) {
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "max length of a Tcl list (%" TCL_Z_MODIFIER "u elements) exceeded", LIST_MAX));
+ "max length of a Tcl list (%" TCL_SIZE_MODIFIER "d elements) exceeded", LIST_MAX));
Tcl_SetErrorCode(interp, "TCL", "MEMORY", NULL);
return TCL_ERROR;
}
@@ -3037,7 +3037,7 @@ Tcl_LreplaceObjCmd(
Tcl_Obj *const objv[]) /* Argument objects. */
{
Tcl_Obj *listPtr;
- size_t numToDelete, listLen, first, last;
+ Tcl_Size numToDelete, listLen, first, last;
int result;
if (objc < 4) {
@@ -3067,16 +3067,16 @@ Tcl_LreplaceObjCmd(
return result;
}
- if (first == TCL_INDEX_NONE) {
+ if (first < 0) {
first = 0;
} else if (first > listLen) {
first = listLen;
}
- if (last + 1 > listLen) {
+ if (last >= listLen) {
last = listLen - 1;
}
- if (first + 1 <= last + 1) {
+ if (first <= last) {
numToDelete = last - first + 1;
} else {
numToDelete = 0;
@@ -3138,7 +3138,7 @@ Tcl_LreverseObjCmd(
Tcl_Obj *const objv[]) /* Argument values. */
{
Tcl_Obj **elemv;
- size_t elemc, i, j;
+ Tcl_Size elemc, i, j;
if (objc != 2) {
Tcl_WrongNumArgs(interp, 1, objv, "list");
@@ -3244,7 +3244,7 @@ Tcl_LsearchObjCmd(
{
const char *bytes, *patternBytes;
int match, index, result=TCL_OK, bisect;
- size_t i, length = 0, listc, elemLen, start, groupSize, groupOffset, lower, upper;
+ Tcl_Size i, length = 0, listc, elemLen, start, groupSize, groupOffset, lower, upper;
int allocatedIndexVector = 0;
int isIncreasing;
Tcl_WideInt patWide, objWide, wide;
@@ -3303,7 +3303,7 @@ Tcl_LsearchObjCmd(
return TCL_ERROR;
}
- for (i = 1; i < (size_t)objc-2; i++) {
+ for (i = 1; i < objc-2; i++) {
enum lsearchoptions idx;
if (Tcl_GetIndexFromObj(interp, objv[i], options, "option", 0, &idx)
!= TCL_OK) {
@@ -3373,9 +3373,9 @@ Tcl_LsearchObjCmd(
Tcl_DecrRefCount(startPtr);
startPtr = NULL;
}
- if (i + 4 > (size_t)objc) {
+ if (i > objc-4) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "missing starting index", TCL_INDEX_NONE));
+ "missing starting index", -1));
Tcl_SetErrorCode(interp, "TCL", "ARGUMENT", "MISSING", NULL);
result = TCL_ERROR;
goto done;
@@ -3396,10 +3396,10 @@ Tcl_LsearchObjCmd(
Tcl_IncrRefCount(startPtr);
break;
case LSEARCH_STRIDE: /* -stride */
- if (i + 4 > (size_t)objc) {
+ if (i > objc-4) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"\"-stride\" option must be "
- "followed by stride length", TCL_INDEX_NONE));
+ "followed by stride length", -1));
Tcl_SetErrorCode(interp, "TCL", "ARGUMENT", "MISSING", NULL);
result = TCL_ERROR;
goto done;
@@ -3410,7 +3410,7 @@ Tcl_LsearchObjCmd(
}
if (wide < 1) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "stride length must be at least 1", TCL_INDEX_NONE));
+ "stride length must be at least 1", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "LSEARCH",
"BADSTRIDE", NULL);
result = TCL_ERROR;
@@ -3421,13 +3421,13 @@ Tcl_LsearchObjCmd(
break;
case LSEARCH_INDEX: { /* -index */
Tcl_Obj **indices;
- size_t j;
+ Tcl_Size j;
if (allocatedIndexVector) {
TclStackFree(interp, sortInfo.indexv);
allocatedIndexVector = 0;
}
- if (i + 4 > (size_t)objc) {
+ if (i > objc-4) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"\"-index\" option must be followed by list index",
-1));
@@ -3500,7 +3500,7 @@ Tcl_LsearchObjCmd(
if (returnSubindices && sortInfo.indexc==0) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "-subindices cannot be used without -index option", TCL_INDEX_NONE));
+ "-subindices cannot be used without -index option", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "LSEARCH",
"BAD_OPTION_MIX", NULL);
result = TCL_ERROR;
@@ -3509,7 +3509,7 @@ Tcl_LsearchObjCmd(
if (bisect && (allMatches || negatedMatch)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "-bisect is not compatible with -all or -not", TCL_INDEX_NONE));
+ "-bisect is not compatible with -all or -not", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "LSEARCH",
"BAD_OPTION_MIX", NULL);
result = TCL_ERROR;
@@ -3576,10 +3576,10 @@ Tcl_LsearchObjCmd(
*/
groupOffset = TclIndexDecode(sortInfo.indexv[0], groupSize - 1);
- if (groupOffset >= groupSize) {
+ if (groupOffset < 0 || groupOffset >= groupSize) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"when used with \"-stride\", the leading \"-index\""
- " value must be within the group", TCL_INDEX_NONE));
+ " value must be within the group", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "LSEARCH",
"BADINDEX", NULL);
result = TCL_ERROR;
@@ -3616,7 +3616,7 @@ Tcl_LsearchObjCmd(
* "did not match anything at all" result straight away. [Bug 1374778]
*/
- if (start >= (size_t)listc) {
+ if (start >= listc) {
if (allMatches || inlineReturn) {
Tcl_ResetResult(interp);
} else {
@@ -3907,7 +3907,7 @@ Tcl_LsearchObjCmd(
Tcl_ListObjAppendElement(interp, listPtr, itemPtr);
}
} else if (returnSubindices) {
- size_t j;
+ Tcl_Size j;
TclNewIndexObj(itemPtr, i+groupOffset);
for (j=0 ; j<sortInfo.indexc ; j++) {
@@ -3931,7 +3931,7 @@ Tcl_LsearchObjCmd(
Tcl_SetObjResult(interp, listPtr);
} else if (!inlineReturn) {
if (returnSubindices) {
- size_t j;
+ Tcl_Size j;
TclNewIndexObj(itemPtr, index+groupOffset);
for (j=0 ; j<sortInfo.indexc ; j++) {
@@ -4491,10 +4491,10 @@ Tcl_LsortObjCmd(
int indices, nocase = 0, indexc;
int sortMode = SORTMODE_ASCII;
int group, allocatedIndexVector = 0;
- size_t j, idx, groupSize, groupOffset, length;
+ Tcl_Size j, idx, groupSize, groupOffset, length;
Tcl_WideInt wide;
Tcl_Obj *resultPtr, *cmdPtr, **listObjPtrs, *listObj, *indexPtr;
- size_t i, elmArrSize;
+ Tcl_Size i, elmArrSize;
SortElement *elementArray = NULL, *elementPtr;
SortInfo sortInfo; /* Information about this sort that needs to
* be passed to the comparison function. */
@@ -4538,7 +4538,7 @@ Tcl_LsortObjCmd(
groupSize = 1;
groupOffset = 0;
indexPtr = NULL;
- for (i = 1; i < (size_t)objc-1; i++) {
+ for (i = 1; i < objc-1; i++) {
if (Tcl_GetIndexFromObj(interp, objv[i], switches, "option", 0,
&index) != TCL_OK) {
sortInfo.resultCode = TCL_ERROR;
@@ -4549,10 +4549,10 @@ Tcl_LsortObjCmd(
sortInfo.sortMode = SORTMODE_ASCII;
break;
case LSORT_COMMAND:
- if (i + 2 == (size_t)objc) {
+ if (i == objc-2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"\"-command\" option must be followed "
- "by comparison command", TCL_INDEX_NONE));
+ "by comparison command", -1));
Tcl_SetErrorCode(interp, "TCL", "ARGUMENT", "MISSING", NULL);
sortInfo.resultCode = TCL_ERROR;
goto done;
@@ -4571,10 +4571,10 @@ Tcl_LsortObjCmd(
sortInfo.isIncreasing = 1;
break;
case LSORT_INDEX: {
- size_t sortindex;
+ Tcl_Size sortindex;
Tcl_Obj **indexv;
- if (i + 2 == (size_t)objc) {
+ if (i == objc-2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"\"-index\" option must be followed by list index",
-1));
@@ -4636,10 +4636,10 @@ Tcl_LsortObjCmd(
indices = 1;
break;
case LSORT_STRIDE:
- if (i + 2 == (size_t)objc) {
+ if (i == objc-2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"\"-stride\" option must be "
- "followed by stride length", TCL_INDEX_NONE));
+ "followed by stride length", -1));
Tcl_SetErrorCode(interp, "TCL", "ARGUMENT", "MISSING", NULL);
sortInfo.resultCode = TCL_ERROR;
goto done;
@@ -4650,7 +4650,7 @@ Tcl_LsortObjCmd(
}
if (wide < 2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "stride length must be at least 2", TCL_INDEX_NONE));
+ "stride length must be at least 2", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "LSORT",
"BADSTRIDE", NULL);
sortInfo.resultCode = TCL_ERROR;
@@ -4769,10 +4769,10 @@ Tcl_LsortObjCmd(
*/
groupOffset = TclIndexDecode(sortInfo.indexv[0], groupSize - 1);
- if (groupOffset >= groupSize) {
+ if (groupOffset < 0 || groupOffset >= groupSize) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"when used with \"-stride\", the leading \"-index\""
- " value must be within the group", TCL_INDEX_NONE));
+ " value must be within the group", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "LSORT",
"BADINDEX", NULL);
sortInfo.resultCode = TCL_ERROR;
@@ -5013,10 +5013,10 @@ Tcl_LeditObjCmd(
Tcl_Obj *finalValuePtr; /* Value finally assigned to the variable. */
int createdNewObj;
int result;
- size_t first;
- size_t last;
- size_t listLen;
- size_t numToDelete;
+ Tcl_Size first;
+ Tcl_Size last;
+ Tcl_Size listLen;
+ Tcl_Size numToDelete;
if (objc < 4) {
Tcl_WrongNumArgs(interp, 1, objv,
@@ -5049,17 +5049,17 @@ Tcl_LeditObjCmd(
return result;
}
- if (first == TCL_INDEX_NONE) {
+ if (first < 0) {
first = 0;
} else if (first > listLen) {
first = listLen;
}
/* The +1 in comparisons are necessitated by indices being unsigned */
- if ((last + 1) > listLen) {
+ if (last >= listLen) {
last = listLen - 1;
}
- if ((first + 1) <= (last + 1)) {
+ if (first <= last) {
numToDelete = last - first + 1;
} else {
numToDelete = 0;
@@ -5255,7 +5255,7 @@ SortCompare(
order = ((a >= b) - (a <= b));
} else {
Tcl_Obj **objv, *paramObjv[2];
- size_t objc;
+ Tcl_Size objc;
Tcl_Obj *objPtr1, *objPtr2;
if (infoPtr->resultCode != TCL_OK) {
@@ -5299,7 +5299,7 @@ SortCompare(
if (TclGetIntFromObj(infoPtr->interp,
Tcl_GetObjResult(infoPtr->interp), &order) != TCL_OK) {
Tcl_SetObjResult(infoPtr->interp, Tcl_NewStringObj(
- "-compare command returned non-integer result", TCL_INDEX_NONE));
+ "-compare command returned non-integer result", -1));
Tcl_SetErrorCode(infoPtr->interp, "TCL", "OPERATION", "LSORT",
"COMPARISONFAILED", NULL);
infoPtr->resultCode = TCL_ERROR;
@@ -5473,7 +5473,7 @@ SelectObjFromSublist(
SortInfo *infoPtr) /* Information passed from the top-level
* "lsearch" or "lsort" command. */
{
- size_t i;
+ Tcl_Size i;
/*
* Quick check for case when no "-index" option is there.
@@ -5489,7 +5489,7 @@ SelectObjFromSublist(
*/
for (i=0 ; i<infoPtr->indexc ; i++) {
- size_t listLen;
+ Tcl_Size listLen;
int index;
Tcl_Obj *currentObj;
@@ -5506,7 +5506,7 @@ SelectObjFromSublist(
return NULL;
}
if (currentObj == NULL) {
- if (index == (int)TCL_INDEX_NONE) {
+ if (index == TCL_INDEX_NONE) {
index = TCL_INDEX_END - infoPtr->indexv[i];
Tcl_SetObjResult(infoPtr->interp, Tcl_ObjPrintf(
"element end-%d missing from sublist \"%s\"",
diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c
index 77c8cb4..ee0f30e 100644
--- a/generic/tclCmdMZ.c
+++ b/generic/tclCmdMZ.c
@@ -128,7 +128,7 @@ Tcl_RegexpObjCmd(
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
{
- size_t offset, stringLength, matchLength, cflags, eflags;
+ Tcl_Size offset, stringLength, matchLength, cflags, eflags;
int i, indices, match, about, all, doinline, numMatchesSaved;
Tcl_RegExp regExpr;
Tcl_Obj *objPtr, *startIndex = NULL, *resultPtr = NULL;
@@ -191,11 +191,11 @@ Tcl_RegexpObjCmd(
cflags |= TCL_REG_NLANCH;
break;
case REGEXP_START: {
- size_t temp;
+ Tcl_Size temp;
if (++i >= objc) {
goto endOfForLoop;
}
- if (TclGetIntForIndexM(interp, objv[i], (size_t)WIDE_MAX - 1, &temp) != TCL_OK) {
+ if (TclGetIntForIndexM(interp, objv[i], TCL_SIZE_MAX - 1, &temp) != TCL_OK) {
goto optionError;
}
if (startIndex) {
@@ -227,7 +227,7 @@ Tcl_RegexpObjCmd(
if (doinline && ((objc - 2) != 0)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "regexp match variables not allowed when using -inline", TCL_INDEX_NONE));
+ "regexp match variables not allowed when using -inline", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "REGEXP",
"MIX_VAR_INLINE", NULL);
goto optionError;
@@ -261,7 +261,7 @@ Tcl_RegexpObjCmd(
if (startIndex) {
TclGetIntForIndexM(interp, startIndex, stringLength, &offset);
Tcl_DecrRefCount(startIndex);
- if (offset == TCL_INDEX_NONE) {
+ if (offset < 0) {
offset = TCL_INDEX_START;
}
}
@@ -308,7 +308,7 @@ Tcl_RegexpObjCmd(
if (offset == TCL_INDEX_START) {
eflags = 0;
- } else if (offset + 1 > stringLength + 1) {
+ } else if (offset > stringLength) {
eflags = TCL_REG_NOTBOL;
} else if (Tcl_GetUniChar(objPtr, offset-1) == '\n') {
eflags = 0;
@@ -364,7 +364,7 @@ Tcl_RegexpObjCmd(
Tcl_Obj *newPtr;
if (indices) {
- size_t start, end;
+ Tcl_Size start, end;
Tcl_Obj *objs[2];
/*
@@ -372,7 +372,7 @@ Tcl_RegexpObjCmd(
* area. (Scriptics Bug 4391/SF Bug #219232)
*/
- if (i <= (int)info.nsubs && info.matches[i].start != TCL_INDEX_NONE) {
+ if (i <= (int)info.nsubs && info.matches[i].start >= 0) {
start = offset + info.matches[i].start;
end = offset + info.matches[i].end;
@@ -381,7 +381,7 @@ Tcl_RegexpObjCmd(
* match instead of the first character after the match.
*/
- if (end + 1 >= offset + 1) {
+ if (end >= offset) {
end--;
}
} else {
@@ -394,7 +394,7 @@ Tcl_RegexpObjCmd(
newPtr = Tcl_NewListObj(2, objs);
} else {
- if ((i <= (int)info.nsubs) && (info.matches[i].end + 1 > 1)) {
+ if ((i <= (int)info.nsubs) && (info.matches[i].end > 0)) {
newPtr = Tcl_GetRange(objPtr,
offset + info.matches[i].start,
offset + info.matches[i].end - 1);
@@ -444,7 +444,7 @@ Tcl_RegexpObjCmd(
offset++;
}
all++;
- if (offset + 1 >= stringLength + 1) {
+ if (offset >= stringLength) {
break;
}
}
@@ -488,8 +488,8 @@ Tcl_RegsubObjCmd(
Tcl_Obj *const objv[]) /* Argument objects. */
{
int result, cflags, all, match, command;
- size_t idx, wlen, wsublen = 0, offset, numMatches, numParts;
- size_t start, end, subStart, subEnd;
+ Tcl_Size idx, wlen, wsublen = 0, offset, numMatches, numParts;
+ Tcl_Size start, end, subStart, subEnd;
Tcl_RegExp regExpr;
Tcl_RegExpInfo info;
Tcl_Obj *resultPtr, *subPtr, *objPtr, *startIndex = NULL;
@@ -512,7 +512,7 @@ Tcl_RegsubObjCmd(
command = 0;
resultPtr = NULL;
- for (idx = 1; idx < (size_t)objc; idx++) {
+ for (idx = 1; idx < objc; idx++) {
const char *name;
name = TclGetString(objv[idx]);
@@ -546,11 +546,11 @@ Tcl_RegsubObjCmd(
cflags |= TCL_REG_NLANCH;
break;
case REGSUB_START: {
- size_t temp;
- if (++idx >= (size_t)objc) {
+ Tcl_Size temp;
+ if (++idx >= objc) {
goto endOfForLoop;
}
- if (TclGetIntForIndexM(interp, objv[idx], (size_t)WIDE_MAX - 1, &temp) != TCL_OK) {
+ if (TclGetIntForIndexM(interp, objv[idx], TCL_SIZE_MAX - 1, &temp) != TCL_OK) {
goto optionError;
}
if (startIndex) {
@@ -567,7 +567,7 @@ Tcl_RegsubObjCmd(
}
endOfForLoop:
- if ((size_t)objc < idx + 3 || (size_t)objc > idx + 4) {
+ if (objc < idx + 3 || objc > idx + 4) {
Tcl_WrongNumArgs(interp, 1, objv,
"?-option ...? exp string subSpec ?varName?");
optionError:
@@ -581,16 +581,16 @@ Tcl_RegsubObjCmd(
objv += idx;
if (startIndex) {
- size_t stringLength = Tcl_GetCharLength(objv[1]);
+ Tcl_Size stringLength = Tcl_GetCharLength(objv[1]);
TclGetIntForIndexM(interp, startIndex, stringLength, &offset);
Tcl_DecrRefCount(startIndex);
- if (offset == TCL_INDEX_NONE) {
- offset = TCL_INDEX_START;
+ if (offset < 0) {
+ offset = 0;
}
}
- if (all && (offset == TCL_INDEX_START) && (command == 0)
+ if (all && (offset == 0) && (command == 0)
&& (strpbrk(TclGetString(objv[2]), "&\\") == NULL)
&& (strpbrk(TclGetString(objv[0]), "*+?{}()[].\\|^$") == NULL)) {
/*
@@ -598,7 +598,7 @@ Tcl_RegsubObjCmd(
* slightly modified version of the one pair STR_MAP code.
*/
- size_t slen;
+ Tcl_Size slen;
int nocase, wsrclc;
int (*strCmpFn)(const Tcl_UniChar*,const Tcl_UniChar*,size_t);
Tcl_UniChar *p;
@@ -774,7 +774,7 @@ Tcl_RegsubObjCmd(
if (command) {
Tcl_Obj **args = NULL, **parts;
- size_t numArgs;
+ Tcl_Size numArgs;
TclListObjGetElementsM(interp, subPtr, &numParts, &parts);
numArgs = numParts + info.nsubs + 1;
@@ -784,7 +784,7 @@ Tcl_RegsubObjCmd(
for (idx = 0 ; idx <= info.nsubs ; idx++) {
subStart = info.matches[idx].start;
subEnd = info.matches[idx].end;
- if ((subStart != TCL_INDEX_NONE) && (subEnd != TCL_INDEX_NONE)) {
+ if ((subStart >= 0) && (subEnd >= 0)) {
args[idx + numParts] = Tcl_NewUnicodeObj(
wstring + offset + subStart, subEnd - subStart);
} else {
@@ -888,7 +888,7 @@ Tcl_RegsubObjCmd(
if (idx <= info.nsubs) {
subStart = info.matches[idx].start;
subEnd = info.matches[idx].end;
- if ((subStart != TCL_INDEX_NONE) && (subEnd != TCL_INDEX_NONE)) {
+ if ((subStart >= 0) && (subEnd >= 0)) {
Tcl_AppendUnicodeToObj(resultPtr,
wstring + offset + subStart, subEnd - subStart);
}
@@ -1179,7 +1179,7 @@ Tcl_SplitObjCmd(
const char *splitChars;
const char *stringPtr;
const char *end;
- size_t splitCharLen, stringLen;
+ Tcl_Size splitCharLen, stringLen;
Tcl_Obj *listPtr, *objPtr;
if (objc == 2) {
@@ -1252,7 +1252,7 @@ Tcl_SplitObjCmd(
Tcl_ListObjAppendElement(NULL, listPtr, objPtr);
} else {
const char *element, *p, *splitEnd;
- size_t splitLen;
+ Tcl_Size splitLen;
int splitChar;
/*
@@ -1307,7 +1307,7 @@ StringFirstCmd(
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
{
- size_t start = TCL_INDEX_START;
+ Tcl_Size start = TCL_INDEX_START;
if (objc < 3 || objc > 4) {
Tcl_WrongNumArgs(interp, 1, objv,
@@ -1316,7 +1316,7 @@ StringFirstCmd(
}
if (objc == 4) {
- size_t end = Tcl_GetCharLength(objv[2]) - 1;
+ Tcl_Size end = Tcl_GetCharLength(objv[2]) - 1;
if (TCL_OK != TclGetIntForIndexM(interp, objv[3], end, &start)) {
return TCL_ERROR;
@@ -1351,7 +1351,7 @@ StringLastCmd(
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
{
- size_t last = TCL_INDEX_END;
+ Tcl_Size last = TCL_SIZE_MAX;
if (objc < 3 || objc > 4) {
Tcl_WrongNumArgs(interp, 1, objv,
@@ -1360,7 +1360,7 @@ StringLastCmd(
}
if (objc == 4) {
- size_t end = Tcl_GetCharLength(objv[2]) - 1;
+ Tcl_Size end = Tcl_GetCharLength(objv[2]) - 1;
if (TCL_OK != TclGetIntForIndexM(interp, objv[3], end, &last)) {
return TCL_ERROR;
@@ -1395,7 +1395,7 @@ StringIndexCmd(
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
{
- size_t index, end;
+ Tcl_Size index, end;
if (objc != 3) {
Tcl_WrongNumArgs(interp, 1, objv, "string charIndex");
@@ -1411,7 +1411,7 @@ StringIndexCmd(
return TCL_ERROR;
}
- if ((index != TCL_INDEX_NONE) && (index + 1 <= end + 1)) {
+ if ((index >= 0) && (index <= end)) {
int ch = Tcl_GetUniChar(objv[1], index);
if (ch == -1) {
@@ -1467,8 +1467,8 @@ StringInsertCmd(
int objc, /* Number of arguments */
Tcl_Obj *const objv[]) /* Argument objects */
{
- size_t length; /* String length */
- size_t index; /* Insert index */
+ Tcl_Size length; /* String length */
+ Tcl_Size index; /* Insert index */
Tcl_Obj *outObj; /* Output object */
if (objc != 4) {
@@ -1481,7 +1481,7 @@ StringInsertCmd(
return TCL_ERROR;
}
- if (index == TCL_INDEX_NONE) {
+ if (index < 0) {
index = TCL_INDEX_START;
}
if (index > length) {
@@ -1527,7 +1527,7 @@ StringIsCmd(
const char *string1, *end, *stop;
int (*chcomp)(int) = NULL; /* The UniChar comparison function. */
int i, result = 1, strict = 0;
- size_t failat = 0, length1, length2, length3;
+ Tcl_Size failat = 0, length1, length2, length3;
Tcl_Obj *objPtr, *failVarObj = NULL;
Tcl_WideInt w;
@@ -1630,7 +1630,7 @@ StringIsCmd(
break;
case STR_IS_DICT: {
int dresult;
- size_t dsize;
+ Tcl_Size dsize;
dresult = Tcl_DictObjSize(interp, objPtr, &dsize);
Tcl_ResetResult(interp);
@@ -1643,8 +1643,7 @@ StringIsCmd(
*/
const char *elemStart, *nextElem;
- int lenRemain;
- size_t elemSize;
+ Tcl_Size lenRemain, elemSize;
const char *p;
string1 = Tcl_GetStringFromObj(objPtr, &length1);
@@ -1824,8 +1823,8 @@ StringIsCmd(
*/
const char *elemStart, *nextElem;
- size_t lenRemain;
- size_t elemSize;
+ Tcl_Size lenRemain;
+ Tcl_Size elemSize;
const char *p;
string1 = Tcl_GetStringFromObj(objPtr, &length1);
@@ -1960,7 +1959,7 @@ StringMapCmd(
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
{
- size_t length1, length2, mapElemc, index;
+ Tcl_Size length1, length2, mapElemc, index;
int nocase = 0, mapWithDict = 0, copySource = 0;
Tcl_Obj **mapElemv, *sourceObj, *resultPtr;
Tcl_UniChar *ustring1, *ustring2, *p, *end;
@@ -1993,7 +1992,7 @@ StringMapCmd(
if (!TclHasStringRep(objv[objc-2])
&& TclHasInternalRep(objv[objc-2], &tclDictType)) {
- size_t i;
+ Tcl_Size i;
int done;
Tcl_DictSearch search;
@@ -2028,7 +2027,7 @@ StringMapCmd(
}
Tcl_DictObjDone(&search);
} else {
- size_t i;
+ Tcl_Size i;
if (TclListObjGetElementsM(interp, objv[objc-2], &i,
&mapElemv) != TCL_OK) {
return TCL_ERROR;
@@ -2047,7 +2046,7 @@ StringMapCmd(
*/
Tcl_SetObjResult(interp,
- Tcl_NewStringObj("char map list unbalanced", TCL_INDEX_NONE));
+ Tcl_NewStringObj("char map list unbalanced", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "MAP",
"UNBALANCED", NULL);
return TCL_ERROR;
@@ -2091,7 +2090,7 @@ StringMapCmd(
* larger strings.
*/
- size_t mapLen;
+ Tcl_Size mapLen;
int u2lc;
Tcl_UniChar *mapString;
@@ -2125,7 +2124,7 @@ StringMapCmd(
}
} else {
Tcl_UniChar **mapStrings;
- size_t *mapLens;
+ Tcl_Size *mapLens;
int *u2lc = 0;
/*
@@ -2136,7 +2135,7 @@ StringMapCmd(
*/
mapStrings = (Tcl_UniChar **)TclStackAlloc(interp, mapElemc*sizeof(Tcl_UniChar *)*2);
- mapLens = (size_t *)TclStackAlloc(interp, mapElemc * sizeof(size_t) * 2);
+ mapLens = (Tcl_Size *)TclStackAlloc(interp, mapElemc * sizeof(Tcl_Size) * 2);
if (nocase) {
u2lc = (int *)TclStackAlloc(interp, mapElemc * sizeof(int));
}
@@ -2158,7 +2157,7 @@ StringMapCmd(
if ((length2 > 0) && ((*ustring1 == *ustring2) || (nocase &&
(Tcl_UniCharToLower(*ustring1) == u2lc[index/2]))) &&
/* Restrict max compare length. */
- ((size_t)(end-ustring1) >= length2) && ((length2 == 1) ||
+ ((end-ustring1) >= length2) && ((length2 == 1) ||
!strCmpFn(ustring2, ustring1, length2))) {
if (p != ustring1) {
/*
@@ -2244,7 +2243,7 @@ StringMatchCmd(
}
if (objc == 4) {
- size_t length;
+ Tcl_Size length;
const char *string = Tcl_GetStringFromObj(objv[1], &length);
if ((length > 1) &&
@@ -2288,7 +2287,7 @@ StringRangeCmd(
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
{
- size_t first, last, end;
+ Tcl_Size first, last, end;
if (objc != 4) {
Tcl_WrongNumArgs(interp, 1, objv, "string first last");
@@ -2307,7 +2306,7 @@ StringRangeCmd(
return TCL_ERROR;
}
- if (last != TCL_INDEX_NONE) {
+ if (last >= 0) {
Tcl_SetObjResult(interp, Tcl_GetRange(objv[1], first, last));
}
return TCL_OK;
@@ -2394,7 +2393,7 @@ StringRplcCmd(
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
{
- size_t first, last, end;
+ Tcl_Size first, last, end;
if (objc < 4 || objc > 5) {
Tcl_WrongNumArgs(interp, 1, objv, "string first last ?string?");
@@ -2414,9 +2413,9 @@ StringRplcCmd(
* result is the original string.
*/
- if ((last == TCL_INDEX_NONE) || /* Range ends before start of string */
- (first + 1 > end + 1) || /* Range begins after end of string */
- (last + 1 < first + 1)) { /* Range begins after it starts */
+ if ((last < 0) || /* Range ends before start of string */
+ (first > end) || /* Range begins after end of string */
+ (last < first)) { /* Range begins after it starts */
/*
* BUT!!! when (end < 0) -- an empty original string -- we can
* have (first <= end < 0 <= last) and an empty string is permitted
@@ -2427,10 +2426,10 @@ StringRplcCmd(
} else {
Tcl_Obj *resultPtr;
- if (first == TCL_INDEX_NONE) {
+ if (first < 0) {
first = TCL_INDEX_START;
}
- if (last + 1 > end + 1) {
+ if (last > end) {
last = end;
}
@@ -2506,7 +2505,7 @@ StringStartCmd(
{
int ch;
const Tcl_UniChar *p, *string;
- size_t cur, index, length;
+ Tcl_Size cur, index, length;
Tcl_Obj *obj;
if (objc != 3) {
@@ -2518,11 +2517,11 @@ StringStartCmd(
if (TclGetIntForIndexM(interp, objv[2], length-1, &index) != TCL_OK) {
return TCL_ERROR;
}
- if (index + 1 >= length + 1) {
+ if (index >= length) {
index = length - 1;
}
cur = 0;
- if (index + 1 > 1) {
+ if (index > 0) {
p = &string[index];
(void)TclUniCharToUCS4(p, &ch);
@@ -2576,7 +2575,7 @@ StringEndCmd(
{
int ch;
const Tcl_UniChar *p, *end, *string;
- size_t cur, index, length;
+ Tcl_Size cur, index, length;
Tcl_Obj *obj;
if (objc != 3) {
@@ -2588,10 +2587,10 @@ StringEndCmd(
if (TclGetIntForIndexM(interp, objv[2], length-1, &index) != TCL_OK) {
return TCL_ERROR;
}
- if (index == TCL_INDEX_NONE) {
- index = TCL_INDEX_START;
+ if (index < 0) {
+ index = 0;
}
- if (index + 1 <= length + 1) {
+ if (index < length) {
p = &string[index];
end = string+length;
for (cur = index; p < end; cur++) {
@@ -2644,7 +2643,7 @@ StringEqualCmd(
const char *string2;
int i, match, nocase = 0, reqlength = -1;
- size_t length;
+ Tcl_Size length;
if (objc < 3 || objc > 6) {
str_cmp_args:
@@ -2740,7 +2739,7 @@ TclStringCmpOpts(
int *reqlength)
{
int i;
- size_t length;
+ Tcl_Size length;
const char *string;
*reqlength = -1;
@@ -2880,7 +2879,7 @@ StringLowerCmd(
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
{
- size_t length1, length2;
+ Tcl_Size length1, length2;
const char *string1;
char *string2;
@@ -2898,7 +2897,7 @@ StringLowerCmd(
Tcl_SetObjLength(resultPtr, length1);
Tcl_SetObjResult(interp, resultPtr);
} else {
- size_t first, last;
+ Tcl_Size first, last;
const char *start, *end;
Tcl_Obj *resultPtr;
@@ -2906,7 +2905,7 @@ StringLowerCmd(
if (TclGetIntForIndexM(interp,objv[2],length1, &first) != TCL_OK) {
return TCL_ERROR;
}
- if (first == TCL_INDEX_NONE) {
+ if (first < 0) {
first = 0;
}
last = first;
@@ -2916,10 +2915,10 @@ StringLowerCmd(
return TCL_ERROR;
}
- if (last + 1 >= length1 + 1) {
+ if (last >= length1) {
last = length1;
}
- if (last + 1 < first + 1) {
+ if (last < first) {
Tcl_SetObjResult(interp, objv[1]);
return TCL_OK;
}
@@ -2933,7 +2932,7 @@ StringLowerCmd(
length2 = Tcl_UtfToLower(string2);
Tcl_SetObjLength(resultPtr, length2 + (start - string1));
- Tcl_AppendToObj(resultPtr, end, TCL_INDEX_NONE);
+ Tcl_AppendToObj(resultPtr, end, -1);
Tcl_SetObjResult(interp, resultPtr);
}
@@ -2965,7 +2964,7 @@ StringUpperCmd(
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
{
- size_t length1, length2;
+ Tcl_Size length1, length2;
const char *string1;
char *string2;
@@ -2983,7 +2982,7 @@ StringUpperCmd(
Tcl_SetObjLength(resultPtr, length1);
Tcl_SetObjResult(interp, resultPtr);
} else {
- size_t first, last;
+ Tcl_Size first, last;
const char *start, *end;
Tcl_Obj *resultPtr;
@@ -2991,8 +2990,8 @@ StringUpperCmd(
if (TclGetIntForIndexM(interp,objv[2],length1, &first) != TCL_OK) {
return TCL_ERROR;
}
- if (first == TCL_INDEX_NONE) {
- first = TCL_INDEX_START;
+ if (first < 0) {
+ first = 0;
}
last = first;
@@ -3001,10 +3000,10 @@ StringUpperCmd(
return TCL_ERROR;
}
- if (last + 1 >= length1 + 1) {
+ if (last >= length1) {
last = length1;
}
- if (last + 1 < first + 1) {
+ if (last < first) {
Tcl_SetObjResult(interp, objv[1]);
return TCL_OK;
}
@@ -3018,7 +3017,7 @@ StringUpperCmd(
length2 = Tcl_UtfToUpper(string2);
Tcl_SetObjLength(resultPtr, length2 + (start - string1));
- Tcl_AppendToObj(resultPtr, end, TCL_INDEX_NONE);
+ Tcl_AppendToObj(resultPtr, end, -1);
Tcl_SetObjResult(interp, resultPtr);
}
@@ -3050,7 +3049,7 @@ StringTitleCmd(
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
{
- size_t length1, length2;
+ Tcl_Size length1, length2;
const char *string1;
char *string2;
@@ -3068,7 +3067,7 @@ StringTitleCmd(
Tcl_SetObjLength(resultPtr, length1);
Tcl_SetObjResult(interp, resultPtr);
} else {
- size_t first, last;
+ Tcl_Size first, last;
const char *start, *end;
Tcl_Obj *resultPtr;
@@ -3076,8 +3075,8 @@ StringTitleCmd(
if (TclGetIntForIndexM(interp,objv[2],length1, &first) != TCL_OK) {
return TCL_ERROR;
}
- if (first == TCL_INDEX_NONE) {
- first = TCL_INDEX_START;
+ if (first < 0) {
+ first = 0;
}
last = first;
@@ -3086,10 +3085,10 @@ StringTitleCmd(
return TCL_ERROR;
}
- if (last + 1 >= length1 + 1) {
+ if (last >= length1) {
last = length1;
}
- if (last + 1 < first + 1) {
+ if (last < first) {
Tcl_SetObjResult(interp, objv[1]);
return TCL_OK;
}
@@ -3103,7 +3102,7 @@ StringTitleCmd(
length2 = Tcl_UtfToTitle(string2);
Tcl_SetObjLength(resultPtr, length2 + (start - string1));
- Tcl_AppendToObj(resultPtr, end, TCL_INDEX_NONE);
+ Tcl_AppendToObj(resultPtr, end, -1);
Tcl_SetObjResult(interp, resultPtr);
}
@@ -3136,7 +3135,7 @@ StringTrimCmd(
Tcl_Obj *const objv[]) /* Argument objects. */
{
const char *string1, *string2;
- size_t triml, trimr, length1, length2;
+ Tcl_Size triml, trimr, length1, length2;
if (objc == 3) {
string2 = Tcl_GetStringFromObj(objv[2], &length2);
@@ -3184,7 +3183,7 @@ StringTrimLCmd(
{
const char *string1, *string2;
int trim;
- size_t length1, length2;
+ Tcl_Size length1, length2;
if (objc == 3) {
string2 = Tcl_GetStringFromObj(objv[2], &length2);
@@ -3231,7 +3230,7 @@ StringTrimRCmd(
{
const char *string1, *string2;
int trim;
- size_t length1, length2;
+ Tcl_Size length1, length2;
if (objc == 3) {
string2 = Tcl_GetStringFromObj(objv[2], &length2);
@@ -3328,7 +3327,7 @@ TclInitStringCmd(
int
TclSubstOptions(
Tcl_Interp *interp,
- size_t numOpts1,
+ Tcl_Size numOpts,
Tcl_Obj *const opts[],
int *flagPtr)
{
@@ -3339,7 +3338,6 @@ TclSubstOptions(
SUBST_NOBACKSLASHES, SUBST_NOCOMMANDS, SUBST_NOVARS
};
int i, flags = TCL_SUBST_ALL;
- int numOpts = numOpts1;
for (i = 0; i < numOpts; i++) {
int optionIndex;
@@ -3432,7 +3430,7 @@ TclNRSwitchObjCmd(
{
int i, mode, foundmode, splitObjs, numMatchesSaved;
int noCase;
- size_t patternLength, j;
+ Tcl_Size patternLength, j;
const char *pattern;
Tcl_Obj *stringObj, *indexVarObj, *matchVarObj;
Tcl_Obj *const *savedObjv = objv;
@@ -3580,7 +3578,7 @@ TclNRSwitchObjCmd(
splitObjs = 0;
if (objc == 1) {
Tcl_Obj **listv;
- size_t listc;
+ Tcl_Size listc;
blist = objv[0];
if (TclListObjLengthM(interp, objv[0], &listc) != TCL_OK) {
@@ -3612,7 +3610,7 @@ TclNRSwitchObjCmd(
if (objc % 2) {
Tcl_ResetResult(interp);
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "extra switch pattern with no body", TCL_INDEX_NONE));
+ "extra switch pattern with no body", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "SWITCH", "BADARM",
NULL);
@@ -3630,7 +3628,7 @@ TclNRSwitchObjCmd(
Tcl_AppendToObj(Tcl_GetObjResult(interp),
", this may be due to a comment incorrectly"
" placed outside of a switch body - see the"
- " \"switch\" documentation", TCL_INDEX_NONE);
+ " \"switch\" documentation", -1);
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "SWITCH",
"BADARM", "COMMENT?", NULL);
break;
@@ -3748,7 +3746,7 @@ TclNRSwitchObjCmd(
if (indexVarObj != NULL) {
Tcl_Obj *rangeObjAry[2];
- if (info.matches[j].end + 1 > 1) {
+ if (info.matches[j].end > 0) {
TclNewIndexObj(rangeObjAry[0], info.matches[j].start);
TclNewIndexObj(rangeObjAry[1], info.matches[j].end-1);
} else {
@@ -3767,7 +3765,7 @@ TclNRSwitchObjCmd(
if (matchVarObj != NULL) {
Tcl_Obj *substringObj;
- if (info.matches[j].end + 1 > 1) {
+ if (info.matches[j].end > 0) {
substringObj = Tcl_GetRange(stringObj,
info.matches[j].start, info.matches[j].end-1);
} else {
@@ -3872,7 +3870,7 @@ TclNRSwitchObjCmd(
}
for (j = i + 1; ; j += 2) {
- if (j >= (size_t)objc) {
+ if (j >= objc) {
/*
* This shouldn't happen since we've checked that the last body is
* not a continuation...
@@ -3906,7 +3904,7 @@ SwitchPostProc(
CmdFrame *ctxPtr = (CmdFrame *)data[1];
int pc = PTR2INT(data[2]);
const char *pattern = (const char *)data[3];
- size_t patternLength = strlen(pattern);
+ Tcl_Size patternLength = strlen(pattern);
/*
* Clean up TIP 280 context information
@@ -3928,12 +3926,12 @@ SwitchPostProc(
*/
if (result == TCL_ERROR) {
- unsigned limit = 50;
+ int limit = 50;
int overflow = (patternLength > limit);
Tcl_AppendObjToErrorInfo(interp, Tcl_ObjPrintf(
"\n (\"%.*s%s\" arm line %d)",
- (overflow ? limit : (unsigned)patternLength), pattern,
+ (int) (overflow ? limit : patternLength), pattern,
(overflow ? "..." : ""), Tcl_GetErrorLine(interp)));
}
TclStackFree(interp, ctxPtr);
@@ -3965,7 +3963,7 @@ Tcl_ThrowObjCmd(
Tcl_Obj *const objv[]) /* Argument objects. */
{
Tcl_Obj *options;
- size_t len;
+ Tcl_Size len;
if (objc != 3) {
Tcl_WrongNumArgs(interp, 1, objv, "type message");
@@ -3980,7 +3978,7 @@ Tcl_ThrowObjCmd(
return TCL_ERROR;
} else if (len < 1) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "type must be non-empty list", TCL_INDEX_NONE));
+ "type must be non-empty list", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "THROW", "BADEXCEPTION",
NULL);
return TCL_ERROR;
@@ -4682,7 +4680,7 @@ TclNRTryObjCmd(
{
Tcl_Obj *bodyObj, *handlersObj, *finallyObj = NULL;
int i, bodyShared, haveHandlers, code;
- size_t dummy;
+ Tcl_Size dummy;
static const char *const handlerNames[] = {
"finally", "on", "trap", NULL
};
@@ -4718,7 +4716,7 @@ TclNRTryObjCmd(
case TryFinally: /* finally script */
if (i < objc-2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "finally clause must be last", TCL_INDEX_NONE));
+ "finally clause must be last", -1));
Tcl_DecrRefCount(handlersObj);
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "TRY", "FINALLY",
"NONTERMINAL", NULL);
@@ -4726,7 +4724,7 @@ TclNRTryObjCmd(
} else if (i == objc-1) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"wrong # args to finally clause: must be"
- " \"... finally script\"", TCL_INDEX_NONE));
+ " \"... finally script\"", -1));
Tcl_DecrRefCount(handlersObj);
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "TRY", "FINALLY",
"ARGUMENT", NULL);
@@ -4739,7 +4737,7 @@ TclNRTryObjCmd(
if (i > objc-4) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"wrong # args to on clause: must be \"... on code"
- " variableList script\"", TCL_INDEX_NONE));
+ " variableList script\"", -1));
Tcl_DecrRefCount(handlersObj);
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "TRY", "ON",
"ARGUMENT", NULL);
@@ -4800,7 +4798,7 @@ TclNRTryObjCmd(
}
if (bodyShared) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "last non-finally clause must not have a body of \"-\"", TCL_INDEX_NONE));
+ "last non-finally clause must not have a body of \"-\"", -1));
Tcl_DecrRefCount(handlersObj);
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "TRY", "BADFALLTHROUGH",
NULL);
@@ -4880,7 +4878,7 @@ TryPostBody(
{
Tcl_Obj *resultObj, *options, *handlersObj, *finallyObj, *cmdObj, **objv;
int code, objc;
- size_t i, numHandlers = 0;
+ Tcl_Size i, numHandlers = 0;
handlersObj = (Tcl_Obj *)data[0];
finallyObj = (Tcl_Obj *)data[1];
@@ -4930,7 +4928,7 @@ TryPostBody(
TclListObjGetElementsM(NULL, handlersObj, &numHandlers, &handlers);
for (i=0 ; i<numHandlers ; i++) {
Tcl_Obj *handlerBodyObj;
- size_t numElems = 0;
+ Tcl_Size numElems = 0;
TclListObjGetElementsM(NULL, handlers[i], &numElems, &info);
if (!found) {
@@ -4948,7 +4946,7 @@ TryPostBody(
if (code == TCL_ERROR) {
Tcl_Obj *errorCodeName, *errcode, **bits1, **bits2;
- size_t len1, len2, j;
+ Tcl_Size len1, len2, j;
TclNewLiteralStringObj(errorCodeName, "-errorcode");
Tcl_DictObjGet(NULL, options, errorCodeName, &errcode);
@@ -5302,7 +5300,7 @@ TclListLines(
Tcl_Obj *listObj, /* Pointer to obj holding a string with list
* structure. Assumed to be valid. Assumed to
* contain n elements. */
- size_t line, /* Line the list as a whole starts on. */
+ Tcl_Size line, /* Line the list as a whole starts on. */
int n, /* #elements in lines */
int *lines, /* Array of line numbers, to fill. */
Tcl_Obj *const *elems) /* The list elems as Tcl_Obj*, in need of
diff --git a/generic/tclCompCmds.c b/generic/tclCompCmds.c
index 3a61a94..ed33d34 100644
--- a/generic/tclCompCmds.c
+++ b/generic/tclCompCmds.c
@@ -287,7 +287,7 @@ TclCompileArraySetCmd(
Tcl_Token *varTokenPtr, *dataTokenPtr;
int isScalar, localIndex, code = TCL_OK;
int isDataLiteral, isDataValid, isDataEven;
- size_t len;
+ Tcl_Size len;
int keyVar, valVar, infoIndex;
int fwd, offsetBack, offsetFwd;
Tcl_Obj *literalObj;
@@ -393,7 +393,7 @@ TclCompileArraySetCmd(
infoPtr = (ForeachInfo *)Tcl_Alloc(offsetof(ForeachInfo, varLists) + sizeof(ForeachVarList *));
infoPtr->numLists = 1;
- infoPtr->varLists[0] = (ForeachVarList *)Tcl_Alloc(offsetof(ForeachVarList, varIndexes) + 2 * sizeof(size_t));
+ infoPtr->varLists[0] = (ForeachVarList *)Tcl_Alloc(offsetof(ForeachVarList, varIndexes) + 2 * sizeof(Tcl_Size));
infoPtr->varLists[0]->numVars = 2;
infoPtr->varLists[0]->varIndexes[0] = keyVar;
infoPtr->varLists[0]->varIndexes[1] = valVar;
@@ -891,7 +891,7 @@ TclCompileConcatCmd(
if (listObj != NULL) {
Tcl_Obj **objs;
const char *bytes;
- size_t len, slen;
+ Tcl_Size len, slen;
TclListObjGetElementsM(NULL, listObj, &len, &objs);
objPtr = Tcl_ConcatObj(len, objs);
@@ -1078,7 +1078,7 @@ TclCompileDictIncrCmd(
if (parsePtr->numWords == 4) {
const char *word;
- size_t numBytes;
+ Tcl_Size numBytes;
int code;
Tcl_Token *incrTokenPtr;
Tcl_Obj *intObj;
@@ -1293,7 +1293,7 @@ TclCompileDictCreateCmd(
Tcl_Obj *keyObj, *valueObj, *dictObj;
const char *bytes;
int i;
- size_t len;
+ Tcl_Size len;
if ((parsePtr->numWords & 1) == 0) {
return TCL_ERROR;
@@ -1528,7 +1528,7 @@ CompileDictEachCmd(
Tcl_Token *varsTokenPtr, *dictTokenPtr, *bodyTokenPtr;
int keyVarIndex, valueVarIndex, nameChars, loopRange, catchRange;
int infoIndex, jumpDisplacement, bodyTargetOffset, emptyTargetOffset;
- size_t numVars;
+ Tcl_Size numVars;
int endTargetOffset;
int collectVar = -1; /* Index of temp var holding the result
* dict. */
@@ -2296,11 +2296,11 @@ PrintDictUpdateInfo(
TCL_UNUSED(size_t))
{
DictUpdateInfo *duiPtr = (DictUpdateInfo *)clientData;
- size_t i;
+ Tcl_Size i;
for (i=0 ; i<duiPtr->length ; i++) {
if (i) {
- Tcl_AppendToObj(appendObj, ", ", TCL_INDEX_NONE);
+ Tcl_AppendToObj(appendObj, ", ", -1);
}
Tcl_AppendPrintfToObj(appendObj, "%%v%" TCL_Z_MODIFIER "u", duiPtr->varIndices[i]);
}
@@ -2314,7 +2314,7 @@ DisassembleDictUpdateInfo(
TCL_UNUSED(size_t))
{
DictUpdateInfo *duiPtr = (DictUpdateInfo *)clientData;
- size_t i;
+ Tcl_Size i;
Tcl_Obj *variables;
TclNewObj(variables);
@@ -2322,7 +2322,7 @@ DisassembleDictUpdateInfo(
Tcl_ListObjAppendElement(NULL, variables,
Tcl_NewWideIntObj(duiPtr->varIndices[i]));
}
- Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("variables", TCL_INDEX_NONE),
+ Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("variables", -1),
variables);
}
@@ -2690,7 +2690,7 @@ CompileEachloopCmd(
Tcl_Token *tokenPtr, *bodyTokenPtr;
int jumpBackOffset, infoIndex, range;
int numWords, numLists, i, code = TCL_OK;
- size_t j;
+ Tcl_Size j;
Tcl_Obj *varListObj = NULL;
/*
@@ -2742,7 +2742,7 @@ CompileEachloopCmd(
i < numWords-1;
i++, tokenPtr = TokenAfter(tokenPtr)) {
ForeachVarList *varListPtr;
- size_t numVars;
+ Tcl_Size numVars;
if (i%2 != 1) {
continue;
@@ -2762,7 +2762,7 @@ CompileEachloopCmd(
}
varListPtr = (ForeachVarList *)Tcl_Alloc(offsetof(ForeachVarList, varIndexes)
- + numVars * sizeof(size_t));
+ + numVars * sizeof(varListPtr->varIndexes[0]));
varListPtr->numVars = numVars;
infoPtr->varLists[i/2] = varListPtr;
infoPtr->numLists++;
@@ -2771,7 +2771,7 @@ CompileEachloopCmd(
Tcl_Obj *varNameObj;
const char *bytes;
int varIndex;
- size_t length;
+ Tcl_Size length;
Tcl_ListObjIndex(NULL, varListObj, j, &varNameObj);
@@ -2980,13 +2980,13 @@ PrintForeachInfo(
{
ForeachInfo *infoPtr = (ForeachInfo *)clientData;
ForeachVarList *varsPtr;
- size_t i, j;
+ Tcl_Size i, j;
- Tcl_AppendToObj(appendObj, "data=[", TCL_INDEX_NONE);
+ Tcl_AppendToObj(appendObj, "data=[", -1);
for (i=0 ; i<infoPtr->numLists ; i++) {
if (i) {
- Tcl_AppendToObj(appendObj, ", ", TCL_INDEX_NONE);
+ Tcl_AppendToObj(appendObj, ", ", -1);
}
Tcl_AppendPrintfToObj(appendObj, "%%v%" TCL_Z_MODIFIER "u",
(infoPtr->firstValueTemp + i));
@@ -2995,19 +2995,19 @@ PrintForeachInfo(
infoPtr->loopCtTemp);
for (i=0 ; i<infoPtr->numLists ; i++) {
if (i) {
- Tcl_AppendToObj(appendObj, ",", TCL_INDEX_NONE);
+ Tcl_AppendToObj(appendObj, ",", -1);
}
Tcl_AppendPrintfToObj(appendObj, "\n\t\t it%%v%" TCL_Z_MODIFIER "u\t[",
(infoPtr->firstValueTemp + i));
varsPtr = infoPtr->varLists[i];
for (j=0 ; j<varsPtr->numVars ; j++) {
if (j) {
- Tcl_AppendToObj(appendObj, ", ", TCL_INDEX_NONE);
+ Tcl_AppendToObj(appendObj, ", ", -1);
}
Tcl_AppendPrintfToObj(appendObj, "%%v%" TCL_Z_MODIFIER "u",
varsPtr->varIndexes[j]);
}
- Tcl_AppendToObj(appendObj, "]", TCL_INDEX_NONE);
+ Tcl_AppendToObj(appendObj, "]", -1);
}
}
@@ -3020,24 +3020,24 @@ PrintNewForeachInfo(
{
ForeachInfo *infoPtr = (ForeachInfo *)clientData;
ForeachVarList *varsPtr;
- size_t i, j;
+ Tcl_Size i, j;
Tcl_AppendPrintfToObj(appendObj, "jumpOffset=%+" TCL_Z_MODIFIER "d, vars=",
infoPtr->loopCtTemp);
for (i=0 ; i<infoPtr->numLists ; i++) {
if (i) {
- Tcl_AppendToObj(appendObj, ",", TCL_INDEX_NONE);
+ Tcl_AppendToObj(appendObj, ",", -1);
}
- Tcl_AppendToObj(appendObj, "[", TCL_INDEX_NONE);
+ Tcl_AppendToObj(appendObj, "[", -1);
varsPtr = infoPtr->varLists[i];
for (j=0 ; j<varsPtr->numVars ; j++) {
if (j) {
- Tcl_AppendToObj(appendObj, ",", TCL_INDEX_NONE);
+ Tcl_AppendToObj(appendObj, ",", -1);
}
Tcl_AppendPrintfToObj(appendObj, "%%v%" TCL_Z_MODIFIER "u",
varsPtr->varIndexes[j]);
}
- Tcl_AppendToObj(appendObj, "]", TCL_INDEX_NONE);
+ Tcl_AppendToObj(appendObj, "]", -1);
}
}
@@ -3050,7 +3050,7 @@ DisassembleForeachInfo(
{
ForeachInfo *infoPtr = (ForeachInfo *)clientData;
ForeachVarList *varsPtr;
- size_t i, j;
+ Tcl_Size i, j;
Tcl_Obj *objPtr, *innerPtr;
/*
@@ -3062,13 +3062,13 @@ DisassembleForeachInfo(
Tcl_ListObjAppendElement(NULL, objPtr,
Tcl_NewWideIntObj(infoPtr->firstValueTemp + i));
}
- Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("data", TCL_INDEX_NONE), objPtr);
+ Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("data", -1), objPtr);
/*
* Loop counter.
*/
- Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("loop", TCL_INDEX_NONE),
+ Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("loop", -1),
Tcl_NewWideIntObj(infoPtr->loopCtTemp));
/*
@@ -3085,7 +3085,7 @@ DisassembleForeachInfo(
}
Tcl_ListObjAppendElement(NULL, objPtr, innerPtr);
}
- Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("assign", TCL_INDEX_NONE), objPtr);
+ Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("assign", -1), objPtr);
}
static void
@@ -3097,14 +3097,14 @@ DisassembleNewForeachInfo(
{
ForeachInfo *infoPtr = (ForeachInfo *)clientData;
ForeachVarList *varsPtr;
- size_t i, j;
+ Tcl_Size i, j;
Tcl_Obj *objPtr, *innerPtr;
/*
* Jump offset.
*/
- Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("jumpOffset", TCL_INDEX_NONE),
+ Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("jumpOffset", -1),
Tcl_NewWideIntObj(infoPtr->loopCtTemp));
/*
@@ -3121,7 +3121,7 @@ DisassembleNewForeachInfo(
}
Tcl_ListObjAppendElement(NULL, objPtr, innerPtr);
}
- Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("assign", TCL_INDEX_NONE), objPtr);
+ Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("assign", -1), objPtr);
}
/*
diff --git a/generic/tclCompCmdsGR.c b/generic/tclCompCmdsGR.c
index c86d369..7dbc706 100644
--- a/generic/tclCompCmdsGR.c
+++ b/generic/tclCompCmdsGR.c
@@ -2268,7 +2268,7 @@ TclCompileReturnCmd(
* An even number of words means an explicit result argument is present.
*/
int level, code, objc, status = TCL_OK;
- size_t size;
+ Tcl_Size size;
int numWords = parsePtr->numWords;
int explicitResult = (0 == (numWords % 2));
int numOptionWords = numWords - 1 - explicitResult;
@@ -2478,7 +2478,7 @@ TclCompileSyntaxError(
CompileEnv *envPtr)
{
Tcl_Obj *msg = Tcl_GetObjResult(interp);
- size_t numBytes;
+ Tcl_Size numBytes;
const char *bytes = Tcl_GetStringFromObj(msg, &numBytes);
TclErrorStackResetIf(interp, bytes, numBytes);
diff --git a/generic/tclCompCmdsSZ.c b/generic/tclCompCmdsSZ.c
index c8fa120..cdd254a 100644
--- a/generic/tclCompCmdsSZ.c
+++ b/generic/tclCompCmdsSZ.c
@@ -921,7 +921,7 @@ TclCompileStringMapCmd(
Tcl_Token *mapTokenPtr, *stringTokenPtr;
Tcl_Obj *mapObj, **objv;
const char *bytes;
- size_t len, slen;
+ Tcl_Size len, slen;
/*
* We only handle the case:
@@ -1517,14 +1517,14 @@ void
TclSubstCompile(
Tcl_Interp *interp,
const char *bytes,
- size_t numBytes,
+ Tcl_Size numBytes,
int flags,
- size_t line,
+ Tcl_Size line,
CompileEnv *envPtr)
{
Tcl_Token *endTokenPtr, *tokenPtr;
int breakOffset = 0, count = 0;
- size_t bline = line;
+ Tcl_Size bline = line;
Tcl_Parse parse;
Tcl_InterpState state = NULL;
@@ -1549,7 +1549,7 @@ TclSubstCompile(
for (endTokenPtr = tokenPtr + parse.numTokens;
tokenPtr < endTokenPtr; tokenPtr = TokenAfter(tokenPtr)) {
- size_t length;
+ Tcl_Size length;
int literal, catchRange, breakJump;
char buf[4] = "";
JumpFixup startFixup, okFixup, returnFixup, breakFixup;
@@ -1581,7 +1581,7 @@ TclSubstCompile(
*/
if (tokenPtr->numComponents > 1) {
- size_t i;
+ Tcl_Size i;
int foundCommand = 0;
for (i=2 ; i<=tokenPtr->numComponents ; i++) {
@@ -1945,8 +1945,8 @@ TclCompileSwitchCmd(
if (numWords == 1) {
const char *bytes;
- size_t maxLen, numBytes;
- size_t bline; /* TIP #280: line of the pattern/action list,
+ Tcl_Size maxLen, numBytes;
+ Tcl_Size bline; /* TIP #280: line of the pattern/action list,
* and start of list for when tracking the
* location. This list comes immediately after
* the value we switch on. */
@@ -2604,9 +2604,9 @@ PrintJumptableInfo(
offset = PTR2INT(Tcl_GetHashValue(hPtr));
if (i++) {
- Tcl_AppendToObj(appendObj, ", ", TCL_INDEX_NONE);
+ Tcl_AppendToObj(appendObj, ", ", -1);
if (i%4==0) {
- Tcl_AppendToObj(appendObj, "\n\t\t", TCL_INDEX_NONE);
+ Tcl_AppendToObj(appendObj, "\n\t\t", -1);
}
}
Tcl_AppendPrintfToObj(appendObj, "\"%s\"->pc %" TCL_Z_MODIFIER "u",
@@ -2633,10 +2633,10 @@ DisassembleJumptableInfo(
for (; hPtr ; hPtr = Tcl_NextHashEntry(&search)) {
keyPtr = (const char *)Tcl_GetHashKey(&jtPtr->hashTable, hPtr);
offset = PTR2INT(Tcl_GetHashValue(hPtr));
- Tcl_DictObjPut(NULL, mapping, Tcl_NewStringObj(keyPtr, TCL_INDEX_NONE),
+ Tcl_DictObjPut(NULL, mapping, Tcl_NewStringObj(keyPtr, -1),
Tcl_NewWideIntObj(offset));
}
- Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("mapping", TCL_INDEX_NONE), mapping);
+ Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("mapping", -1), mapping);
}
/*
@@ -2716,7 +2716,7 @@ TclCompileThrowCmd(
Tcl_Token *codeToken, *msgToken;
Tcl_Obj *objPtr;
int codeKnown, codeIsList, codeIsValid;
- size_t len;
+ Tcl_Size len;
if (numWords != 3) {
return TCL_ERROR;
@@ -2857,7 +2857,7 @@ TclCompileTryCmd(
for (i=0 ; i<numHandlers ; i++) {
Tcl_Obj *tmpObj, **objv;
- size_t objc;
+ Tcl_Size objc;
if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD) {
goto failedToCompile;
@@ -2922,7 +2922,7 @@ TclCompileTryCmd(
goto failedToCompile;
}
if (objc > 0) {
- size_t len;
+ Tcl_Size len;
const char *varname = Tcl_GetStringFromObj(objv[0], &len);
resultVarIndices[i] = LocalScalar(varname, len, envPtr);
@@ -2934,7 +2934,7 @@ TclCompileTryCmd(
resultVarIndices[i] = -1;
}
if (objc == 2) {
- size_t len;
+ Tcl_Size len;
const char *varname = Tcl_GetStringFromObj(objv[1], &len);
optionVarIndices[i] = LocalScalar(varname, len, envPtr);
@@ -3056,7 +3056,7 @@ IssueTryClausesInstructions(
DefineLineInformation; /* TIP #280 */
int range, resultVar, optionsVar;
int i, j, forwardsNeedFixing = 0, trapZero = 0, afterBody = 0;
- size_t slen, len;
+ Tcl_Size slen, len;
int *addrsToFix, *forwardsToFix, notCodeJumpSource, notECJumpSource;
int *noError;
char buf[TCL_INTEGER_SPACE];
@@ -3270,7 +3270,7 @@ IssueTryClausesFinallyInstructions(
int trapZero = 0, afterBody = 0, finalOK, finalError, noFinalError;
int *addrsToFix, *forwardsToFix, notCodeJumpSource, notECJumpSource;
char buf[TCL_INTEGER_SPACE];
- size_t slen, len;
+ Tcl_Size slen, len;
resultVar = AnonymousLocal(envPtr);
optionsVar = AnonymousLocal(envPtr);
@@ -3680,7 +3680,7 @@ TclCompileUnsetCmd(
}
if (varCount == 0) {
const char *bytes;
- size_t len;
+ Tcl_Size len;
bytes = Tcl_GetStringFromObj(leadingWord, &len);
if (i == 1 && len == 11 && !strncmp("-nocomplain", bytes, 11)) {
@@ -4073,7 +4073,7 @@ CompileAssociativeBinaryOpCmd(
{
DefineLineInformation; /* TIP #280 */
Tcl_Token *tokenPtr = parsePtr->tokenPtr;
- size_t words;
+ Tcl_Size words;
/* TODO: Consider support for compiling expanded args. */
for (words=1 ; words<parsePtr->numWords ; words++) {
@@ -4081,7 +4081,7 @@ CompileAssociativeBinaryOpCmd(
CompileWord(envPtr, tokenPtr, interp, words);
}
if (parsePtr->numWords <= 2) {
- PushLiteral(envPtr, identity, TCL_INDEX_NONE);
+ PushLiteral(envPtr, identity, -1);
words++;
}
if (words > 3) {
@@ -4176,7 +4176,7 @@ CompileComparisonOpCmd(
return TCL_ERROR;
} else {
int tmpIndex = AnonymousLocal(envPtr);
- size_t words;
+ Tcl_Size words;
tokenPtr = TokenAfter(parsePtr->tokenPtr);
CompileWord(envPtr, tokenPtr, interp, 1);
@@ -4312,7 +4312,7 @@ TclCompilePowOpCmd(
{
DefineLineInformation; /* TIP #280 */
Tcl_Token *tokenPtr = parsePtr->tokenPtr;
- size_t words;
+ Tcl_Size words;
/*
* This one has its own implementation because the ** operator is the only
@@ -4513,7 +4513,7 @@ TclCompileMinusOpCmd(
{
DefineLineInformation; /* TIP #280 */
Tcl_Token *tokenPtr = parsePtr->tokenPtr;
- size_t words;
+ Tcl_Size words;
/* TODO: Consider support for compiling expanded args. */
if (parsePtr->numWords == 1) {
@@ -4558,7 +4558,7 @@ TclCompileDivOpCmd(
{
DefineLineInformation; /* TIP #280 */
Tcl_Token *tokenPtr = parsePtr->tokenPtr;
- size_t words;
+ Tcl_Size words;
/* TODO: Consider support for compiling expanded args. */
if (parsePtr->numWords == 1) {
diff --git a/generic/tclCompExpr.c b/generic/tclCompExpr.c
index c503304..d316ba1 100644
--- a/generic/tclCompExpr.c
+++ b/generic/tclCompExpr.c
@@ -511,16 +511,16 @@ static void CompileExprTree(Tcl_Interp *interp, OpNode *nodes,
int index, Tcl_Obj *const **litObjvPtr,
Tcl_Obj *const *funcObjv, Tcl_Token *tokenPtr,
CompileEnv *envPtr, int optimize);
-static void ConvertTreeToTokens(const char *start, size_t numBytes,
+static void ConvertTreeToTokens(const char *start, Tcl_Size numBytes,
OpNode *nodes, Tcl_Token *tokenPtr,
Tcl_Parse *parsePtr);
static int ExecConstantExprTree(Tcl_Interp *interp, OpNode *nodes,
int index, Tcl_Obj * const **litObjvPtr);
static int ParseExpr(Tcl_Interp *interp, const char *start,
- size_t numBytes, OpNode **opTreePtr,
+ Tcl_Size numBytes, OpNode **opTreePtr,
Tcl_Obj *litList, Tcl_Obj *funcList,
Tcl_Parse *parsePtr, int parseOnly);
-static size_t ParseLexeme(const char *start, size_t numBytes,
+static Tcl_Size ParseLexeme(const char *start, Tcl_Size numBytes,
unsigned char *lexemePtr, Tcl_Obj **literalPtr);
/*
@@ -558,7 +558,7 @@ static int
ParseExpr(
Tcl_Interp *interp, /* Used for error reporting. */
const char *start, /* Start of source string to parse. */
- size_t numBytes, /* Number of bytes in string. */
+ Tcl_Size numBytes, /* Number of bytes in string. */
OpNode **opTreePtr, /* Points to space where a pointer to the
* allocated OpNode tree should go. */
Tcl_Obj *litList, /* List to append literals to. */
@@ -581,7 +581,7 @@ ParseExpr(
* no need for array growth and
* reallocation. */
unsigned int nodesUsed = 0; /* Number of OpNodes filled. */
- size_t scanned = 0; /* Capture number of byte scanned by parsing
+ Tcl_Size scanned = 0; /* Capture number of byte scanned by parsing
* routines. */
int lastParsed; /* Stores info about what the lexeme parsed
* the previous pass through the parsing loop
@@ -625,7 +625,7 @@ ParseExpr(
* error in the expression. */
int insertMark = 0; /* A boolean controlling whether the "mark"
* should be inserted. */
- const unsigned limit = 25; /* Portions of the error message are
+ const int limit = 25; /* Portions of the error message are
* constructed out of substrings of the
* original expression. In order to keep the
* error message readable, we impose this
@@ -777,16 +777,16 @@ ParseExpr(
Tcl_DecrRefCount(literal);
msg = Tcl_ObjPrintf("invalid bareword \"%.*s%s\"",
- (scanned < limit) ? (int)scanned : (int)limit - 3, start,
+ (int)((scanned < limit) ? scanned : limit - 3), start,
(scanned < limit) ? "" : "...");
post = Tcl_ObjPrintf(
"should be \"$%.*s%s\" or \"{%.*s%s}\"",
- (scanned < limit) ? (int)scanned : (int)limit - 3,
+ (int) ((scanned < limit) ? scanned : limit - 3),
start, (scanned < limit) ? "" : "...",
- (scanned < limit) ? (int)scanned : (int)limit - 3,
+ (int) ((scanned < limit) ? scanned : limit - 3),
start, (scanned < limit) ? "" : "...");
Tcl_AppendPrintfToObj(post, " or \"%.*s%s(...)\" or ...",
- (scanned < limit) ? (int)scanned : (int)limit - 3,
+ (int) ((scanned < limit) ? scanned : limit - 3),
start, (scanned < limit) ? "" : "...");
errCode = "BAREWORD";
if (start[0] == '0') {
@@ -798,14 +798,14 @@ ParseExpr(
switch (start[1]) {
case 'b':
Tcl_AppendToObj(post,
- " (invalid binary number?)", TCL_INDEX_NONE);
+ " (invalid binary number?)", -1);
parsePtr->errorType = TCL_PARSE_BAD_NUMBER;
errCode = "BADNUMBER";
subErrCode = "BINARY";
break;
case 'o':
Tcl_AppendToObj(post,
- " (invalid octal number?)", TCL_INDEX_NONE);
+ " (invalid octal number?)", -1);
parsePtr->errorType = TCL_PARSE_BAD_NUMBER;
errCode = "BADNUMBER";
subErrCode = "OCTAL";
@@ -813,7 +813,7 @@ ParseExpr(
default:
if (isdigit(UCHAR(start[1]))) {
Tcl_AppendToObj(post,
- " (invalid octal number?)", TCL_INDEX_NONE);
+ " (invalid octal number?)", -1);
parsePtr->errorType = TCL_PARSE_BAD_NUMBER;
errCode = "BADNUMBER";
subErrCode = "OCTAL";
@@ -1462,7 +1462,7 @@ ParseExpr(
*/
if (post != NULL) {
- Tcl_AppendToObj(msg, ";\n", TCL_INDEX_NONE);
+ Tcl_AppendToObj(msg, ";\n", -1);
Tcl_AppendObjToObj(msg, post);
Tcl_DecrRefCount(post);
}
@@ -1512,7 +1512,7 @@ ParseExpr(
static void
ConvertTreeToTokens(
const char *start,
- size_t numBytes,
+ Tcl_Size numBytes,
OpNode *nodes,
Tcl_Token *tokenPtr,
Tcl_Parse *parsePtr)
@@ -1860,7 +1860,7 @@ int
Tcl_ParseExpr(
Tcl_Interp *interp, /* Used for error reporting. */
const char *start, /* Start of source string to parse. */
- size_t numBytes, /* Number of bytes in string. If -1, the
+ Tcl_Size numBytes, /* Number of bytes in string. If -1, the
* string consists of all bytes up to the
* first null character. */
Tcl_Parse *parsePtr) /* Structure to fill with information about
@@ -1876,7 +1876,7 @@ Tcl_ParseExpr(
TclNewObj(litList);
TclNewObj(funcList);
- if (numBytes == TCL_INDEX_NONE) {
+ if (numBytes < 0) {
numBytes = (start ? strlen(start) : 0);
}
@@ -1917,10 +1917,10 @@ Tcl_ParseExpr(
*----------------------------------------------------------------------
*/
-static size_t
+static Tcl_Size
ParseLexeme(
const char *start, /* Start of lexeme to parse. */
- size_t numBytes, /* Number of bytes in string. */
+ Tcl_Size numBytes, /* Number of bytes in string. */
unsigned char *lexemePtr, /* Write code of parsed lexeme to this
* storage. */
Tcl_Obj **literalPtr) /* Write corresponding literal value to this
@@ -1945,7 +1945,7 @@ ParseLexeme(
/*
* Scan forward over the comment contents.
*/
- size_t size;
+ Tcl_Size size;
for (size = 0; byte != '\n' && byte != 0 && size < numBytes; size++) {
byte = UCHAR(start[size]);
@@ -2147,7 +2147,7 @@ ParseLexeme(
*/
if (!TclIsBareword(*start) || *start == '_') {
- size_t scanned;
+ Tcl_Size scanned;
if (Tcl_UtfCharComplete(start, numBytes)) {
scanned = TclUtfToUCS4(start, &ch);
} else {
@@ -2197,7 +2197,7 @@ void
TclCompileExpr(
Tcl_Interp *interp, /* Used for error reporting. */
const char *script, /* The source script to compile. */
- size_t numBytes, /* Number of bytes in script. */
+ Tcl_Size numBytes, /* Number of bytes in script. */
CompileEnv *envPtr, /* Holds resulting instructions. */
int optimize) /* 0 for one-off expressions. */
{
@@ -2218,7 +2218,7 @@ TclCompileExpr(
* Valid parse; compile the tree.
*/
- size_t objc;
+ Tcl_Size objc;
Tcl_Obj *const *litObjv;
Tcl_Obj **funcObjv;
@@ -2348,7 +2348,7 @@ CompileExprTree(
case FUNCTION: {
Tcl_DString cmdName;
const char *p;
- size_t length;
+ Tcl_Size length;
Tcl_DStringInit(&cmdName);
TclDStringAppendLiteral(&cmdName, "tcl::mathfunc::");
@@ -2507,7 +2507,7 @@ CompileExprTree(
Tcl_Obj *literal = *litObjv;
if (optimize) {
- size_t length;
+ Tcl_Size length;
const char *bytes = Tcl_GetStringFromObj(literal, &length);
int idx = TclRegisterLiteral(envPtr, bytes, length, 0);
Tcl_Obj *objPtr = TclFetchLiteral(envPtr, idx);
@@ -2566,7 +2566,7 @@ CompileExprTree(
if (TclHasStringRep(objPtr)) {
Tcl_Obj *tableValue;
- size_t numBytes;
+ Tcl_Size numBytes;
const char *bytes
= Tcl_GetStringFromObj(objPtr, &numBytes);
diff --git a/generic/tclCompile.c b/generic/tclCompile.c
index be308e3..48947f1 100644
--- a/generic/tclCompile.c
+++ b/generic/tclCompile.c
@@ -680,9 +680,9 @@ static void DupByteCodeInternalRep(Tcl_Obj *srcPtr,
static unsigned char * EncodeCmdLocMap(CompileEnv *envPtr,
ByteCode *codePtr, unsigned char *startPtr);
static void EnterCmdExtentData(CompileEnv *envPtr,
- size_t cmdNumber, size_t numSrcBytes, size_t numCodeBytes);
+ Tcl_Size cmdNumber, Tcl_Size numSrcBytes, Tcl_Size numCodeBytes);
static void EnterCmdStartData(CompileEnv *envPtr,
- size_t cmdNumber, size_t srcOffset, size_t codeOffset);
+ Tcl_Size cmdNumber, Tcl_Size srcOffset, Tcl_Size codeOffset);
static void FreeByteCodeInternalRep(Tcl_Obj *objPtr);
static void FreeSubstCodeInternalRep(Tcl_Obj *objPtr);
static int GetCmdLocEncodingSize(CompileEnv *envPtr);
@@ -699,9 +699,9 @@ static void StartExpanding(CompileEnv *envPtr);
* TIP #280: Helper for building the per-word line information of all compiled
* commands.
*/
-static void EnterCmdWordData(ExtCmdLoc *eclPtr, size_t srcOffset,
+static void EnterCmdWordData(ExtCmdLoc *eclPtr, Tcl_Size srcOffset,
Tcl_Token *tokenPtr, const char *cmd,
- size_t numWords, size_t line, int *clNext, int **lines,
+ Tcl_Size numWords, Tcl_Size line, int *clNext, int **lines,
CompileEnv *envPtr);
static void ReleaseCmdWordData(ExtCmdLoc *eclPtr);
@@ -1391,7 +1391,7 @@ static void
ReleaseCmdWordData(
ExtCmdLoc *eclPtr)
{
- size_t i;
+ Tcl_Size i;
if (eclPtr->type == TCL_LOCATION_SOURCE) {
Tcl_DecrRefCount(eclPtr->path);
@@ -1553,7 +1553,7 @@ TclInitCompileEnv(
pc = 1;
}
- if ((ctxPtr->nline <= (size_t)word) || (ctxPtr->line[word] < 0)) {
+ if ((ctxPtr->nline <= word) || (ctxPtr->line[word] < 0)) {
/*
* Word is not a literal, relative counting.
*/
@@ -1647,7 +1647,7 @@ TclFreeCompileEnv(
* have transferred to it.
*/
- size_t i;
+ Tcl_Size i;
LiteralEntry *entryPtr = envPtr->literalArrayPtr;
AuxData *auxDataPtr = envPtr->auxDataArrayPtr;
@@ -2161,7 +2161,7 @@ TclCompileScript(
*/
if (iPtr->numLevels / 5 > iPtr->maxNestingDepth / 4) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "too many nested compilations (infinite loop?)", TCL_INDEX_NONE));
+ "too many nested compilations (infinite loop?)", -1));
Tcl_SetErrorCode(interp, "TCL", "LIMIT", "STACK", NULL);
TclCompileSyntaxError(interp, envPtr);
return;
@@ -2323,8 +2323,8 @@ TclCompileVarSubst(
CompileEnv *envPtr)
{
const char *p, *name = tokenPtr[1].start;
- size_t i, nameBytes = tokenPtr[1].size;
- size_t localVar;
+ Tcl_Size i, nameBytes = tokenPtr[1].size;
+ Tcl_Size localVar;
int localVarName = 1;
/*
@@ -2352,11 +2352,11 @@ TclCompileVarSubst(
* of local variables in a procedure frame.
*/
- localVar = TCL_INDEX_NONE;
+ localVar = -1;
if (localVarName != -1) {
localVar = TclFindCompiledLocal(name, nameBytes, localVarName, envPtr);
}
- if (localVar == TCL_INDEX_NONE) {
+ if (localVar < 0) {
PushLiteral(envPtr, name, nameBytes);
}
@@ -2368,7 +2368,7 @@ TclCompileVarSubst(
tokenPtr[1].start + tokenPtr[1].size);
if (tokenPtr->numComponents == 1) {
- if (localVar == TCL_INDEX_NONE) {
+ if (localVar < 0) {
TclEmitOpcode(INST_LOAD_STK, envPtr);
} else if (localVar <= 255) {
TclEmitInstInt1(INST_LOAD_SCALAR1, localVar, envPtr);
@@ -2377,7 +2377,7 @@ TclCompileVarSubst(
}
} else {
TclCompileTokens(interp, tokenPtr+2, tokenPtr->numComponents-1, envPtr);
- if (localVar == TCL_INDEX_NONE) {
+ if (localVar < 0) {
TclEmitOpcode(INST_LOAD_ARRAY_STK, envPtr);
} else if (localVar <= 255) {
TclEmitInstInt1(INST_LOAD_ARRAY1, localVar, envPtr);
@@ -2776,7 +2776,7 @@ PreventCycle(
Tcl_Obj *objPtr,
CompileEnv *envPtr)
{
- size_t i;
+ Tcl_Size i;
for (i = 0; i < envPtr->literalArrayNext; i++) {
if (objPtr == TclFetchLiteral(envPtr, i)) {
@@ -2791,7 +2791,7 @@ PreventCycle(
* can be sure we do not have any lingering cycles hiding in
* the internalrep.
*/
- size_t numBytes;
+ Tcl_Size numBytes;
const char *bytes = Tcl_GetStringFromObj(objPtr, &numBytes);
Tcl_Obj *copyPtr = Tcl_NewStringObj(bytes, numBytes);
@@ -2993,19 +2993,19 @@ TclInitByteCodeObj(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
TclFindCompiledLocal(
const char *name, /* Points to first character of the name of a
* scalar or array variable. If NULL, a
* temporary var should be created. */
- size_t nameBytes, /* Number of bytes in the name. */
+ Tcl_Size nameBytes, /* Number of bytes in the name. */
int create, /* If 1, allocate a local frame entry for the
* variable if it is new. */
CompileEnv *envPtr) /* Points to the current compile environment*/
{
CompiledLocal *localPtr;
- size_t localVar = TCL_INDEX_NONE;
- size_t i;
+ Tcl_Size localVar = TCL_INDEX_NONE;
+ Tcl_Size i;
Proc *procPtr;
/*
@@ -3024,7 +3024,7 @@ TclFindCompiledLocal(
LocalCache *cachePtr = envPtr->iPtr->varFramePtr->localCachePtr;
const char *localName;
Tcl_Obj **varNamePtr;
- size_t len;
+ Tcl_Size len;
if (!cachePtr || !name) {
return TCL_INDEX_NONE;
@@ -3043,7 +3043,7 @@ TclFindCompiledLocal(
}
if (name != NULL) {
- size_t localCt = procPtr->numCompiledLocals;
+ Tcl_Size localCt = procPtr->numCompiledLocals;
localPtr = procPtr->firstLocalPtr;
for (i = 0; i < localCt; i++) {
@@ -3171,14 +3171,14 @@ EnterCmdStartData(
CompileEnv *envPtr, /* Points to the compilation environment
* structure in which to enter command
* location information. */
- size_t cmdIndex, /* Index of the command whose start data is
+ Tcl_Size cmdIndex, /* Index of the command whose start data is
* being set. */
- size_t srcOffset, /* Offset of first char of the command. */
- size_t codeOffset) /* Offset of first byte of command code. */
+ Tcl_Size srcOffset, /* Offset of first char of the command. */
+ Tcl_Size codeOffset) /* Offset of first byte of command code. */
{
CmdLocation *cmdLocPtr;
- if (cmdIndex >= envPtr->numCommands) {
+ if (cmdIndex < 0 || cmdIndex >= envPtr->numCommands) {
Tcl_Panic("EnterCmdStartData: bad command index %" TCL_Z_MODIFIER "u", cmdIndex);
}
@@ -3250,14 +3250,14 @@ EnterCmdExtentData(
CompileEnv *envPtr, /* Points to the compilation environment
* structure in which to enter command
* location information. */
- size_t cmdIndex, /* Index of the command whose source and code
+ Tcl_Size cmdIndex, /* Index of the command whose source and code
* length data is being set. */
- size_t numSrcBytes, /* Number of command source chars. */
- size_t numCodeBytes) /* Offset of last byte of command code. */
+ Tcl_Size numSrcBytes, /* Number of command source chars. */
+ Tcl_Size numCodeBytes) /* Offset of last byte of command code. */
{
CmdLocation *cmdLocPtr;
- if (cmdIndex >= envPtr->numCommands) {
+ if (cmdIndex < 0 || cmdIndex >= envPtr->numCommands) {
Tcl_Panic("EnterCmdExtentData: bad command index %" TCL_Z_MODIFIER "u", cmdIndex);
}
@@ -3296,18 +3296,18 @@ EnterCmdWordData(
ExtCmdLoc *eclPtr, /* Points to the map environment structure in
* which to enter command location
* information. */
- size_t srcOffset, /* Offset of first char of the command. */
+ Tcl_Size srcOffset, /* Offset of first char of the command. */
Tcl_Token *tokenPtr,
const char *cmd,
- size_t numWords,
- size_t line,
+ Tcl_Size numWords,
+ Tcl_Size line,
int *clNext,
int **wlines,
CompileEnv *envPtr)
{
ECL *ePtr;
const char *last;
- size_t wordIdx, wordLine;
+ Tcl_Size wordIdx, wordLine;
int *wwlines, *wordNext;
if (eclPtr->nuloc >= eclPtr->nloc) {
@@ -3373,7 +3373,7 @@ EnterCmdWordData(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
TclCreateExceptRange(
ExceptionRangeType type, /* The kind of ExceptionRange desired. */
CompileEnv *envPtr)/* Points to CompileEnv for which to create a
@@ -3381,7 +3381,7 @@ TclCreateExceptRange(
{
ExceptionRange *rangePtr;
ExceptionAux *auxPtr;
- size_t index = envPtr->exceptArrayNext;
+ Tcl_Size index = envPtr->exceptArrayNext;
if (index >= envPtr->exceptArrayEnd) {
/*
@@ -3734,7 +3734,7 @@ TclFinalizeLoopExceptionRange(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
TclCreateAuxData(
void *clientData, /* The compilation auxiliary data to store in
* the new aux data record. */
@@ -3743,7 +3743,7 @@ TclCreateAuxData(
CompileEnv *envPtr)/* Points to the CompileEnv for which a new
* aux data structure is to be allocated. */
{
- size_t index; /* Index for the new AuxData structure. */
+ Tcl_Size index; /* Index for the new AuxData structure. */
AuxData *auxDataPtr;
/* Points to the new AuxData structure */
@@ -4416,8 +4416,8 @@ EncodeCmdLocMap(
* is to be stored. */
{
CmdLocation *mapPtr = envPtr->cmdMapPtr;
- size_t i, codeDelta, codeLen, srcLen, prevOffset;
- size_t numCmds = envPtr->numCommands;
+ Tcl_Size i, codeDelta, codeLen, srcLen, prevOffset;
+ Tcl_Size numCmds = envPtr->numCommands;
unsigned char *p = startPtr;
int srcDelta;
@@ -4429,7 +4429,7 @@ EncodeCmdLocMap(
prevOffset = 0;
for (i = 0; i < numCmds; i++) {
codeDelta = mapPtr[i].codeOffset - prevOffset;
- if (codeDelta == TCL_INDEX_NONE) {
+ if (codeDelta < 0) {
Tcl_Panic("EncodeCmdLocMap: bad code offset");
} else if (codeDelta <= 127) {
TclStoreInt1AtPtr(codeDelta, p);
@@ -4450,7 +4450,7 @@ EncodeCmdLocMap(
codePtr->codeLengthStart = p;
for (i = 0; i < numCmds; i++) {
codeLen = mapPtr[i].numCodeBytes;
- if (codeLen == TCL_INDEX_NONE) {
+ if (codeLen < 0) {
Tcl_Panic("EncodeCmdLocMap: bad code length");
} else if (codeLen <= 127) {
TclStoreInt1AtPtr(codeLen, p);
@@ -4490,7 +4490,7 @@ EncodeCmdLocMap(
codePtr->srcLengthStart = p;
for (i = 0; i < numCmds; i++) {
srcLen = mapPtr[i].numSrcBytes;
- if (srcLen == TCL_INDEX_NONE) {
+ if (srcLen < 0) {
Tcl_Panic("EncodeCmdLocMap: bad source length");
} else if (srcLen <= 127) {
TclStoreInt1AtPtr(srcLen, p);
diff --git a/generic/tclCompile.h b/generic/tclCompile.h
index 035edac..ccfa4b5 100644
--- a/generic/tclCompile.h
+++ b/generic/tclCompile.h
@@ -1084,7 +1084,7 @@ MODULE_SCOPE ByteCode * TclCompileObj(Tcl_Interp *interp, Tcl_Obj *objPtr,
*/
MODULE_SCOPE int TclAttemptCompileProc(Tcl_Interp *interp,
- Tcl_Parse *parsePtr, size_t depth, Command *cmdPtr,
+ Tcl_Parse *parsePtr, Tcl_Size depth, Command *cmdPtr,
CompileEnv *envPtr);
MODULE_SCOPE void TclCleanupStackForBreakContinue(CompileEnv *envPtr,
ExceptionAux *auxPtr);
@@ -1092,7 +1092,7 @@ MODULE_SCOPE void TclCompileCmdWord(Tcl_Interp *interp,
Tcl_Token *tokenPtr, size_t count,
CompileEnv *envPtr);
MODULE_SCOPE void TclCompileExpr(Tcl_Interp *interp, const char *script,
- size_t numBytes, CompileEnv *envPtr, int optimize);
+ Tcl_Size numBytes, CompileEnv *envPtr, int optimize);
MODULE_SCOPE void TclCompileExprWords(Tcl_Interp *interp,
Tcl_Token *tokenPtr, size_t numWords,
CompileEnv *envPtr);
@@ -1109,13 +1109,13 @@ MODULE_SCOPE void TclCompileTokens(Tcl_Interp *interp,
CompileEnv *envPtr);
MODULE_SCOPE void TclCompileVarSubst(Tcl_Interp *interp,
Tcl_Token *tokenPtr, CompileEnv *envPtr);
-MODULE_SCOPE size_t TclCreateAuxData(void *clientData,
+MODULE_SCOPE Tcl_Size TclCreateAuxData(void *clientData,
const AuxDataType *typePtr, CompileEnv *envPtr);
-MODULE_SCOPE size_t TclCreateExceptRange(ExceptionRangeType type,
+MODULE_SCOPE Tcl_Size TclCreateExceptRange(ExceptionRangeType type,
CompileEnv *envPtr);
MODULE_SCOPE ExecEnv * TclCreateExecEnv(Tcl_Interp *interp, size_t size);
MODULE_SCOPE Tcl_Obj * TclCreateLiteral(Interp *iPtr, const char *bytes,
- size_t length, TCL_HASH_TYPE hash, int *newPtr,
+ Tcl_Size length, TCL_HASH_TYPE hash, int *newPtr,
Namespace *nsPtr, int flags,
LiteralEntry **globalPtrPtr);
MODULE_SCOPE void TclDeleteExecEnv(ExecEnv *eePtr);
@@ -1129,8 +1129,8 @@ MODULE_SCOPE ExceptionRange * TclGetExceptionRangeForPc(unsigned char *pc,
MODULE_SCOPE void TclExpandJumpFixupArray(JumpFixupArray *fixupArrayPtr);
MODULE_SCOPE int TclNRExecuteByteCode(Tcl_Interp *interp,
ByteCode *codePtr);
-MODULE_SCOPE Tcl_Obj * TclFetchLiteral(CompileEnv *envPtr, TCL_HASH_TYPE index);
-MODULE_SCOPE size_t TclFindCompiledLocal(const char *name, size_t nameChars,
+MODULE_SCOPE Tcl_Obj * TclFetchLiteral(CompileEnv *envPtr, int index);
+MODULE_SCOPE Tcl_Size TclFindCompiledLocal(const char *name, Tcl_Size nameChars,
int create, CompileEnv *envPtr);
MODULE_SCOPE int TclFixupForwardJump(CompileEnv *envPtr,
JumpFixup *jumpFixupPtr, int jumpDist,
@@ -1171,9 +1171,9 @@ MODULE_SCOPE void TclPrintByteCodeObj(Tcl_Interp *interp,
MODULE_SCOPE int TclPrintInstruction(ByteCode *codePtr,
const unsigned char *pc);
MODULE_SCOPE void TclPrintObject(FILE *outFile,
- Tcl_Obj *objPtr, size_t maxChars);
+ Tcl_Obj *objPtr, Tcl_Size maxChars);
MODULE_SCOPE void TclPrintSource(FILE *outFile,
- const char *string, size_t maxChars);
+ const char *string, Tcl_Size maxChars);
MODULE_SCOPE void TclPushVarName(Tcl_Interp *interp,
Tcl_Token *varTokenPtr, CompileEnv *envPtr,
int flags, int *localIndexPtr,
@@ -1195,13 +1195,13 @@ MODULE_SCOPE int TclWordKnownAtCompileTime(Tcl_Token *tokenPtr,
Tcl_Obj *valuePtr);
MODULE_SCOPE void TclLogCommandInfo(Tcl_Interp *interp,
const char *script, const char *command,
- size_t length, const unsigned char *pc,
+ Tcl_Size length, const unsigned char *pc,
Tcl_Obj **tosPtr);
MODULE_SCOPE Tcl_Obj *TclGetInnerContext(Tcl_Interp *interp,
const unsigned char *pc, Tcl_Obj **tosPtr);
MODULE_SCOPE Tcl_Obj *TclNewInstNameObj(unsigned char inst);
MODULE_SCOPE int TclPushProcCallFrame(void *clientData,
- Tcl_Interp *interp, size_t objc,
+ Tcl_Interp *interp, Tcl_Size objc,
Tcl_Obj *const objv[], int isLambda);
#endif /* TCL_MAJOR_VERSION > 8 */
diff --git a/generic/tclConfig.c b/generic/tclConfig.c
index 17490bd..a6a5b85 100644
--- a/generic/tclConfig.c
+++ b/generic/tclConfig.c
@@ -85,7 +85,7 @@ Tcl_RegisterConfig(
} else {
cdPtr->encoding = NULL;
}
- cdPtr->pkg = Tcl_NewStringObj(pkgName, TCL_INDEX_NONE);
+ cdPtr->pkg = Tcl_NewStringObj(pkgName, -1);
/*
* Phase I: Adding the provided information to the internal database of
@@ -127,7 +127,7 @@ Tcl_RegisterConfig(
*/
for (cfg=configuration ; cfg->key!=NULL && cfg->key[0]!='\0' ; cfg++) {
- Tcl_DictObjPut(interp, pkgDict, Tcl_NewStringObj(cfg->key, TCL_INDEX_NONE),
+ Tcl_DictObjPut(interp, pkgDict, Tcl_NewStringObj(cfg->key, -1),
Tcl_NewByteArrayObj((unsigned char *)cfg->value, strlen(cfg->value)));
}
@@ -144,7 +144,7 @@ Tcl_RegisterConfig(
Tcl_DStringInit(&cmdName);
TclDStringAppendLiteral(&cmdName, "::");
- Tcl_DStringAppend(&cmdName, pkgName, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&cmdName, pkgName, -1);
/*
* The incomplete command name is the name of the namespace to place it
@@ -199,7 +199,7 @@ QueryConfigObjCmd(
QCCD *cdPtr = (QCCD *)clientData;
Tcl_Obj *pkgName = cdPtr->pkg;
Tcl_Obj *pDB, *pkgDict, *val, *listPtr;
- size_t m, n = 0;
+ Tcl_Size m, n = 0;
static const char *const subcmdStrings[] = {
"get", "list", NULL
};
@@ -227,7 +227,7 @@ QueryConfigObjCmd(
* present.
*/
- Tcl_SetObjResult(interp, Tcl_NewStringObj("package not known", TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("package not known", -1));
Tcl_SetErrorCode(interp, "TCL", "FATAL", "PKGCFG_BASE",
TclGetString(pkgName), NULL);
return TCL_ERROR;
@@ -242,7 +242,7 @@ QueryConfigObjCmd(
if (Tcl_DictObjGet(interp, pkgDict, objv[2], &val) != TCL_OK
|| val == NULL) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj("key not known", TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("key not known", -1));
Tcl_SetErrorCode(interp, "TCL", "LOOKUP", "CONFIG",
TclGetString(objv[2]), NULL);
return TCL_ERROR;
@@ -279,7 +279,7 @@ QueryConfigObjCmd(
if (!listPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "insufficient memory to create list", TCL_INDEX_NONE));
+ "insufficient memory to create list", -1));
Tcl_SetErrorCode(interp, "TCL", "MEMORY", NULL);
return TCL_ERROR;
}
diff --git a/generic/tclDecls.h b/generic/tclDecls.h
index ec9a49a..9bf0b7b 100644
--- a/generic/tclDecls.h
+++ b/generic/tclDecls.h
@@ -1747,16 +1747,16 @@ EXTERN unsigned char * TclGetBytesFromObj(Tcl_Interp *interp,
Tcl_Obj *objPtr, int *numBytesPtr);
/* 650 */
EXTERN unsigned char * Tcl_GetBytesFromObj(Tcl_Interp *interp,
- Tcl_Obj *objPtr, size_t *numBytesPtr);
+ Tcl_Obj *objPtr, Tcl_Size *numBytesPtr);
/* 651 */
EXTERN char * Tcl_GetStringFromObj(Tcl_Obj *objPtr,
- size_t *lengthPtr);
+ Tcl_Size *lengthPtr);
/* 652 */
EXTERN Tcl_UniChar * Tcl_GetUnicodeFromObj(Tcl_Obj *objPtr,
- size_t *lengthPtr);
+ Tcl_Size *lengthPtr);
/* 653 */
EXTERN unsigned char * Tcl_GetByteArrayFromObj(Tcl_Obj *objPtr,
- size_t *numBytesPtr);
+ Tcl_Size *numBytesPtr);
/* 654 */
EXTERN int Tcl_UtfCharComplete(const char *src, Tcl_Size length);
/* 655 */
@@ -1782,27 +1782,27 @@ EXTERN int Tcl_AsyncMarkFromSignal(Tcl_AsyncHandler async,
int sigNumber);
/* 661 */
EXTERN int Tcl_ListObjGetElements(Tcl_Interp *interp,
- Tcl_Obj *listPtr, size_t *objcPtr,
+ Tcl_Obj *listPtr, Tcl_Size *objcPtr,
Tcl_Obj ***objvPtr);
/* 662 */
EXTERN int Tcl_ListObjLength(Tcl_Interp *interp,
- Tcl_Obj *listPtr, size_t *lengthPtr);
+ Tcl_Obj *listPtr, Tcl_Size *lengthPtr);
/* 663 */
EXTERN int Tcl_DictObjSize(Tcl_Interp *interp, Tcl_Obj *dictPtr,
- size_t *sizePtr);
+ Tcl_Size *sizePtr);
/* 664 */
EXTERN int Tcl_SplitList(Tcl_Interp *interp,
- const char *listStr, size_t *argcPtr,
+ const char *listStr, Tcl_Size *argcPtr,
const char ***argvPtr);
/* 665 */
-EXTERN void Tcl_SplitPath(const char *path, size_t *argcPtr,
+EXTERN void Tcl_SplitPath(const char *path, Tcl_Size *argcPtr,
const char ***argvPtr);
/* 666 */
-EXTERN Tcl_Obj * Tcl_FSSplitPath(Tcl_Obj *pathPtr, size_t *lenPtr);
+EXTERN Tcl_Obj * Tcl_FSSplitPath(Tcl_Obj *pathPtr, Tcl_Size *lenPtr);
/* 667 */
EXTERN int Tcl_ParseArgsObjv(Tcl_Interp *interp,
const Tcl_ArgvInfo *argTable,
- size_t *objcPtr, Tcl_Obj *const *objv,
+ Tcl_Size *objcPtr, Tcl_Obj *const *objv,
Tcl_Obj ***remObjv);
/* 668 */
EXTERN Tcl_Size Tcl_UniCharLen(const int *uniStr);
@@ -2525,10 +2525,10 @@ typedef struct TclStubs {
char * (*tcl_UniCharToUtfDString) (const int *uniStr, Tcl_Size uniLength, Tcl_DString *dsPtr); /* 647 */
int * (*tcl_UtfToUniCharDString) (const char *src, Tcl_Size length, Tcl_DString *dsPtr); /* 648 */
unsigned char * (*tclGetBytesFromObj) (Tcl_Interp *interp, Tcl_Obj *objPtr, int *numBytesPtr); /* 649 */
- unsigned char * (*tcl_GetBytesFromObj) (Tcl_Interp *interp, Tcl_Obj *objPtr, size_t *numBytesPtr); /* 650 */
- char * (*tcl_GetStringFromObj) (Tcl_Obj *objPtr, size_t *lengthPtr); /* 651 */
- Tcl_UniChar * (*tcl_GetUnicodeFromObj) (Tcl_Obj *objPtr, size_t *lengthPtr); /* 652 */
- unsigned char * (*tcl_GetByteArrayFromObj) (Tcl_Obj *objPtr, size_t *numBytesPtr); /* 653 */
+ unsigned char * (*tcl_GetBytesFromObj) (Tcl_Interp *interp, Tcl_Obj *objPtr, Tcl_Size *numBytesPtr); /* 650 */
+ char * (*tcl_GetStringFromObj) (Tcl_Obj *objPtr, Tcl_Size *lengthPtr); /* 651 */
+ Tcl_UniChar * (*tcl_GetUnicodeFromObj) (Tcl_Obj *objPtr, Tcl_Size *lengthPtr); /* 652 */
+ unsigned char * (*tcl_GetByteArrayFromObj) (Tcl_Obj *objPtr, Tcl_Size *numBytesPtr); /* 653 */
int (*tcl_UtfCharComplete) (const char *src, Tcl_Size length); /* 654 */
const char * (*tcl_UtfNext) (const char *src); /* 655 */
const char * (*tcl_UtfPrev) (const char *src, const char *start); /* 656 */
@@ -2536,13 +2536,13 @@ typedef struct TclStubs {
int (*tcl_ExternalToUtfDStringEx) (Tcl_Interp *interp, Tcl_Encoding encoding, const char *src, Tcl_Size srcLen, int flags, Tcl_DString *dsPtr, Tcl_Size *errorLocationPtr); /* 658 */
int (*tcl_UtfToExternalDStringEx) (Tcl_Interp *interp, Tcl_Encoding encoding, const char *src, Tcl_Size srcLen, int flags, Tcl_DString *dsPtr, Tcl_Size *errorLocationPtr); /* 659 */
int (*tcl_AsyncMarkFromSignal) (Tcl_AsyncHandler async, int sigNumber); /* 660 */
- int (*tcl_ListObjGetElements) (Tcl_Interp *interp, Tcl_Obj *listPtr, size_t *objcPtr, Tcl_Obj ***objvPtr); /* 661 */
- int (*tcl_ListObjLength) (Tcl_Interp *interp, Tcl_Obj *listPtr, size_t *lengthPtr); /* 662 */
- int (*tcl_DictObjSize) (Tcl_Interp *interp, Tcl_Obj *dictPtr, size_t *sizePtr); /* 663 */
- int (*tcl_SplitList) (Tcl_Interp *interp, const char *listStr, size_t *argcPtr, const char ***argvPtr); /* 664 */
- void (*tcl_SplitPath) (const char *path, size_t *argcPtr, const char ***argvPtr); /* 665 */
- Tcl_Obj * (*tcl_FSSplitPath) (Tcl_Obj *pathPtr, size_t *lenPtr); /* 666 */
- int (*tcl_ParseArgsObjv) (Tcl_Interp *interp, const Tcl_ArgvInfo *argTable, size_t *objcPtr, Tcl_Obj *const *objv, Tcl_Obj ***remObjv); /* 667 */
+ int (*tcl_ListObjGetElements) (Tcl_Interp *interp, Tcl_Obj *listPtr, Tcl_Size *objcPtr, Tcl_Obj ***objvPtr); /* 661 */
+ int (*tcl_ListObjLength) (Tcl_Interp *interp, Tcl_Obj *listPtr, Tcl_Size *lengthPtr); /* 662 */
+ int (*tcl_DictObjSize) (Tcl_Interp *interp, Tcl_Obj *dictPtr, Tcl_Size *sizePtr); /* 663 */
+ int (*tcl_SplitList) (Tcl_Interp *interp, const char *listStr, Tcl_Size *argcPtr, const char ***argvPtr); /* 664 */
+ void (*tcl_SplitPath) (const char *path, Tcl_Size *argcPtr, const char ***argvPtr); /* 665 */
+ Tcl_Obj * (*tcl_FSSplitPath) (Tcl_Obj *pathPtr, Tcl_Size *lenPtr); /* 666 */
+ int (*tcl_ParseArgsObjv) (Tcl_Interp *interp, const Tcl_ArgvInfo *argTable, Tcl_Size *objcPtr, Tcl_Obj *const *objv, Tcl_Obj ***remObjv); /* 667 */
Tcl_Size (*tcl_UniCharLen) (const int *uniStr); /* 668 */
Tcl_Size (*tcl_NumUtfChars) (const char *src, Tcl_Size length); /* 669 */
Tcl_Size (*tcl_GetCharLength) (Tcl_Obj *objPtr); /* 670 */
@@ -3936,7 +3936,7 @@ extern const TclStubs *tclStubsPtr;
#define Tcl_UpVar(interp, frameName, varName, localName, flags) \
Tcl_UpVar2(interp, frameName, varName, NULL, localName, flags)
#define Tcl_AddErrorInfo(interp, message) \
- Tcl_AppendObjToErrorInfo(interp, Tcl_NewStringObj(message, TCL_INDEX_NONE))
+ Tcl_AppendObjToErrorInfo(interp, Tcl_NewStringObj(message, -1))
#define Tcl_AddObjErrorInfo(interp, message, length) \
Tcl_AppendObjToErrorInfo(interp, Tcl_NewStringObj(message, length))
#define Tcl_Eval(interp, objPtr) \
@@ -3948,7 +3948,7 @@ extern const TclStubs *tclStubsPtr;
do { \
const char *__result = result; \
Tcl_FreeProc *__freeProc = freeProc; \
- Tcl_SetObjResult(interp, Tcl_NewStringObj(__result, TCL_INDEX_NONE)); \
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(__result, -1)); \
if (__result != NULL && __freeProc != NULL && __freeProc != TCL_VOLATILE) { \
if (__freeProc == TCL_DYNAMIC) { \
Tcl_Free((char *)__result); \
@@ -4032,7 +4032,7 @@ extern const TclStubs *tclStubsPtr;
#define Tcl_GetBytesFromObj(interp, objPtr, sizePtr) \
(sizeof(*(sizePtr)) <= sizeof(int) ? \
tclStubsPtr->tclGetBytesFromObj(interp, objPtr, (int *)(void *)(sizePtr)) : \
- tclStubsPtr->tcl_GetBytesFromObj(interp, objPtr, (size_t *)(void *)(sizePtr)))
+ tclStubsPtr->tcl_GetBytesFromObj(interp, objPtr, (Tcl_Size *)(void *)(sizePtr)))
#define Tcl_GetIndexFromObjStruct(interp, objPtr, tablePtr, offset, msg, flags, indexPtr) \
(tclStubsPtr->tcl_GetIndexFromObjStruct((interp), (objPtr), (tablePtr), (offset), (msg), \
(flags)|(int)(sizeof(*(indexPtr))<<1), (indexPtr)))
@@ -4045,27 +4045,27 @@ extern const TclStubs *tclStubsPtr;
#define Tcl_GetStringFromObj(objPtr, sizePtr) \
(sizeof(*(sizePtr)) <= sizeof(int) ? \
tclStubsPtr->tclGetStringFromObj(objPtr, (int *)(void *)(sizePtr)) : \
- tclStubsPtr->tcl_GetStringFromObj(objPtr, (size_t *)(void *)(sizePtr)))
+ tclStubsPtr->tcl_GetStringFromObj(objPtr, (Tcl_Size *)(void *)(sizePtr)))
#if TCL_MAJOR_VERSION > 8
#define Tcl_GetByteArrayFromObj(objPtr, sizePtr) \
(sizeof(*(sizePtr)) <= sizeof(int) ? \
tclStubsPtr->tclGetBytesFromObj(NULL, objPtr, (int *)(void *)(sizePtr)) : \
- tclStubsPtr->tcl_GetBytesFromObj(NULL, objPtr, (size_t *)(void *)(sizePtr)))
+ tclStubsPtr->tcl_GetBytesFromObj(NULL, objPtr, (Tcl_Size *)(void *)(sizePtr)))
#else
#define Tcl_GetByteArrayFromObj(objPtr, sizePtr) \
(sizeof(*(sizePtr)) <= sizeof(int) ? \
tclStubsPtr->tclGetByteArrayFromObj(objPtr, (int *)(void *)(sizePtr)) : \
- tclStubsPtr->tcl_GetByteArrayFromObj(objPtr, (size_t *)(void *)(sizePtr)))
+ tclStubsPtr->tcl_GetByteArrayFromObj(objPtr, (Tcl_Size *)(void *)(sizePtr)))
#endif
#define Tcl_GetUnicodeFromObj(objPtr, sizePtr) \
(sizeof(*(sizePtr)) <= sizeof(int) ? \
tclStubsPtr->tclGetUnicodeFromObj(objPtr, (int *)(void *)(sizePtr)) : \
- tclStubsPtr->tcl_GetUnicodeFromObj(objPtr, (size_t *)(void *)(sizePtr)))
+ tclStubsPtr->tcl_GetUnicodeFromObj(objPtr, (Tcl_Size *)(void *)(sizePtr)))
#else
#define Tcl_GetBytesFromObj(interp, objPtr, sizePtr) \
(sizeof(*(sizePtr)) <= sizeof(int) ? \
TclGetBytesFromObj(interp, objPtr, (int *)(void *)(sizePtr)) : \
- (Tcl_GetBytesFromObj)(interp, objPtr, (size_t *)(void *)(sizePtr)))
+ (Tcl_GetBytesFromObj)(interp, objPtr, (Tcl_Size *)(void *)(sizePtr)))
#define Tcl_GetIndexFromObjStruct(interp, objPtr, tablePtr, offset, msg, flags, indexPtr) \
((Tcl_GetIndexFromObjStruct)((interp), (objPtr), (tablePtr), (offset), (msg), \
(flags)|(int)(sizeof(*(indexPtr))<<1), (indexPtr)))
@@ -4078,15 +4078,15 @@ extern const TclStubs *tclStubsPtr;
#define Tcl_GetStringFromObj(objPtr, sizePtr) \
(sizeof(*(sizePtr)) <= sizeof(int) ? \
TclGetStringFromObj(objPtr, (int *)(void *)(sizePtr)) : \
- (Tcl_GetStringFromObj)(objPtr, (size_t *)(void *)(sizePtr)))
+ (Tcl_GetStringFromObj)(objPtr, (Tcl_Size *)(void *)(sizePtr)))
#define Tcl_GetByteArrayFromObj(objPtr, sizePtr) \
(sizeof(*(sizePtr)) <= sizeof(int) ? \
TclGetBytesFromObj(NULL, objPtr, (int *)(void *)(sizePtr)) : \
- (Tcl_GetBytesFromObj)(NULL, objPtr, (size_t *)(void *)(sizePtr)))
+ (Tcl_GetBytesFromObj)(NULL, objPtr, (Tcl_Size *)(void *)(sizePtr)))
#define Tcl_GetUnicodeFromObj(objPtr, sizePtr) \
(sizeof(*(sizePtr)) <= sizeof(int) ? \
TclGetUnicodeFromObj(objPtr, (int *)(void *)(sizePtr)) : \
- (Tcl_GetUnicodeFromObj)(objPtr, (size_t *)(void *)(sizePtr)))
+ (Tcl_GetUnicodeFromObj)(objPtr, (Tcl_Size *)(void *)(sizePtr)))
#endif
#ifdef TCL_MEM_DEBUG
@@ -4161,31 +4161,31 @@ extern const TclStubs *tclStubsPtr;
# undef Tcl_ListObjGetElements
# define Tcl_ListObjGetElements(interp, listPtr, objcPtr, objvPtr) (sizeof(*(objcPtr)) == sizeof(int) \
? tclStubsPtr->tclListObjGetElements((interp), (listPtr), (int *)(void *)(objcPtr), (objvPtr)) \
- : tclStubsPtr->tcl_ListObjGetElements((interp), (listPtr), (size_t *)(void *)(objcPtr), (objvPtr)))
+ : tclStubsPtr->tcl_ListObjGetElements((interp), (listPtr), (Tcl_Size *)(void *)(objcPtr), (objvPtr)))
# undef Tcl_ListObjLength
# define Tcl_ListObjLength(interp, listPtr, lengthPtr) (sizeof(*(lengthPtr)) == sizeof(int) \
? tclStubsPtr->tclListObjLength((interp), (listPtr), (int *)(void *)(lengthPtr)) \
- : tclStubsPtr->tcl_ListObjLength((interp), (listPtr), (size_t *)(void *)(lengthPtr)))
+ : tclStubsPtr->tcl_ListObjLength((interp), (listPtr), (Tcl_Size *)(void *)(lengthPtr)))
# undef Tcl_DictObjSize
# define Tcl_DictObjSize(interp, dictPtr, sizePtr) (sizeof(*(sizePtr)) == sizeof(int) \
? tclStubsPtr->tclDictObjSize((interp), (dictPtr), (int *)(void *)(sizePtr)) \
- : tclStubsPtr->tcl_DictObjSize((interp), (dictPtr), (size_t *)(void *)(sizePtr)))
+ : tclStubsPtr->tcl_DictObjSize((interp), (dictPtr), (Tcl_Size *)(void *)(sizePtr)))
# undef Tcl_SplitList
# define Tcl_SplitList(interp, listStr, argcPtr, argvPtr) (sizeof(*(argcPtr)) == sizeof(int) \
? tclStubsPtr->tclSplitList((interp), (listStr), (int *)(void *)(argcPtr), (argvPtr)) \
- : tclStubsPtr->tcl_SplitList((interp), (listStr), (size_t *)(void *)(argcPtr), (argvPtr)))
+ : tclStubsPtr->tcl_SplitList((interp), (listStr), (Tcl_Size *)(void *)(argcPtr), (argvPtr)))
# undef Tcl_SplitPath
# define Tcl_SplitPath(path, argcPtr, argvPtr) (sizeof(*(argcPtr)) == sizeof(int) \
? tclStubsPtr->tclSplitPath((path), (int *)(void *)(argcPtr), (argvPtr)) \
- : tclStubsPtr->tcl_SplitPath((path), (size_t *)(void *)(argcPtr), (argvPtr)))
+ : tclStubsPtr->tcl_SplitPath((path), (Tcl_Size *)(void *)(argcPtr), (argvPtr)))
# undef Tcl_FSSplitPath
# define Tcl_FSSplitPath(pathPtr, lenPtr) (sizeof(*(lenPtr)) == sizeof(int) \
? tclStubsPtr->tclFSSplitPath((pathPtr), (int *)(void *)(lenPtr)) \
- : tclStubsPtr->tcl_FSSplitPath((pathPtr), (size_t *)(void *)(lenPtr)))
+ : tclStubsPtr->tcl_FSSplitPath((pathPtr), (Tcl_Size *)(void *)(lenPtr)))
# undef Tcl_ParseArgsObjv
# define Tcl_ParseArgsObjv(interp, argTable, objcPtr, objv, remObjv) (sizeof(*(objcPtr)) == sizeof(int) \
? tclStubsPtr->tclParseArgsObjv((interp), (argTable), (int *)(void *)(objcPtr), (objv), (remObjv)) \
- : tclStubsPtr->tcl_ParseArgsObjv((interp), (argTable), (size_t *)(void *)(objcPtr), (objv), (remObjv)))
+ : tclStubsPtr->tcl_ParseArgsObjv((interp), (argTable), (Tcl_Size *)(void *)(objcPtr), (objv), (remObjv)))
#else
# define Tcl_WCharToUtfDString (sizeof(wchar_t) != sizeof(short) \
? (char *(*)(const wchar_t *, Tcl_Size, Tcl_DString *))Tcl_UniCharToUtfDString \
@@ -4202,25 +4202,25 @@ extern const TclStubs *tclStubsPtr;
#if !defined(BUILD_tcl)
# define Tcl_ListObjGetElements(interp, listPtr, objcPtr, objvPtr) (sizeof(*(objcPtr)) == sizeof(int) \
? TclListObjGetElements((interp), (listPtr), (int *)(void *)(objcPtr), (objvPtr)) \
- : (Tcl_ListObjGetElements)((interp), (listPtr), (size_t *)(void *)(objcPtr), (objvPtr)))
+ : (Tcl_ListObjGetElements)((interp), (listPtr), (Tcl_Size *)(void *)(objcPtr), (objvPtr)))
# define Tcl_ListObjLength(interp, listPtr, lengthPtr) (sizeof(*(lengthPtr)) == sizeof(int) \
? TclListObjLength((interp), (listPtr), (int *)(void *)(lengthPtr)) \
- : (Tcl_ListObjLength)((interp), (listPtr), (size_t *)(void *)(lengthPtr)))
+ : (Tcl_ListObjLength)((interp), (listPtr), (Tcl_Size *)(void *)(lengthPtr)))
# define Tcl_DictObjSize(interp, dictPtr, sizePtr) (sizeof(*(sizePtr)) == sizeof(int) \
? TclDictObjSize((interp), (dictPtr), (int *)(void *)(sizePtr)) \
- : (Tcl_DictObjSize)((interp), (dictPtr), (size_t *)(void *)(sizePtr)))
+ : (Tcl_DictObjSize)((interp), (dictPtr), (Tcl_Size *)(void *)(sizePtr)))
# define Tcl_SplitList(interp, listStr, argcPtr, argvPtr) (sizeof(*(argcPtr)) == sizeof(int) \
? TclSplitList((interp), (listStr), (int *)(void *)(argcPtr), (argvPtr)) \
- : (Tcl_SplitList)((interp), (listStr), (size_t *)(void *)(argcPtr), (argvPtr)))
+ : (Tcl_SplitList)((interp), (listStr), (Tcl_Size *)(void *)(argcPtr), (argvPtr)))
# define Tcl_SplitPath(path, argcPtr, argvPtr) (sizeof(*(argcPtr)) == sizeof(int) \
? TclSplitPath((path), (int *)(void *)(argcPtr), (argvPtr)) \
- : (Tcl_SplitPath)((path), (size_t *)(void *)(argcPtr), (argvPtr)))
+ : (Tcl_SplitPath)((path), (Tcl_Size *)(void *)(argcPtr), (argvPtr)))
# define Tcl_FSSplitPath(pathPtr, lenPtr) (sizeof(*(lenPtr)) == sizeof(int) \
? TclFSSplitPath((pathPtr), (int *)(void *)(lenPtr)) \
- : (Tcl_FSSplitPath)((pathPtr), (size_t *)(void *)(lenPtr)))
+ : (Tcl_FSSplitPath)((pathPtr), (Tcl_Size *)(void *)(lenPtr)))
# define Tcl_ParseArgsObjv(interp, argTable, objcPtr, objv, remObjv) (sizeof(*(objcPtr)) == sizeof(int) \
? TclParseArgsObjv((interp), (argTable), (int *)(void *)(objcPtr), (objv), (remObjv)) \
- : (Tcl_ParseArgsObjv)((interp), (argTable), (size_t *)(void *)(objcPtr), (objv), (remObjv)))
+ : (Tcl_ParseArgsObjv)((interp), (argTable), (Tcl_Size *)(void *)(objcPtr), (objv), (remObjv)))
#endif /* !defined(BUILD_tcl) */
#endif
diff --git a/generic/tclDictObj.c b/generic/tclDictObj.c
index 5c18c8a..c38847d 100644
--- a/generic/tclDictObj.c
+++ b/generic/tclDictObj.c
@@ -489,7 +489,7 @@ UpdateStringOfDict(
Dict *dict;
ChainEntry *cPtr;
Tcl_Obj *keyPtr, *valuePtr;
- size_t i, length;
+ Tcl_Size i, length;
TCL_HASH_TYPE bytesNeeded = 0;
const char *elem;
char *dst;
@@ -499,7 +499,7 @@ UpdateStringOfDict(
* is not exposed by any API function...
*/
- size_t numElems;
+ Tcl_Size numElems;
DictGetInternalRep(dictPtr, dict);
@@ -604,7 +604,7 @@ SetDictFromAny(
*/
if (TclHasInternalRep(objPtr, &tclListType.objType)) {
- size_t objc, i;
+ Tcl_Size objc, i;
Tcl_Obj **objv;
/* Cannot fail, we already know the Tcl_ObjType is "list". */
@@ -634,14 +634,14 @@ SetDictFromAny(
Tcl_IncrRefCount(objv[i+1]); /* Since hash now holds ref to it */
}
} else {
- size_t length;
+ Tcl_Size length;
const char *nextElem = Tcl_GetStringFromObj(objPtr, &length);
const char *limit = (nextElem + length);
while (nextElem < limit) {
Tcl_Obj *keyPtr, *valuePtr;
const char *elemStart;
- size_t elemSize;
+ Tcl_Size elemSize;
int literal;
if (TclFindDictElement(interp, nextElem, (limit - nextElem),
@@ -717,7 +717,7 @@ SetDictFromAny(
missingValue:
if (interp != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "missing value to go with key", TCL_INDEX_NONE));
+ "missing value to go with key", -1));
Tcl_SetErrorCode(interp, "TCL", "VALUE", "DICTIONARY", NULL);
}
errorInFindDictElement:
@@ -779,12 +779,12 @@ Tcl_Obj *
TclTraceDictPath(
Tcl_Interp *interp,
Tcl_Obj *dictPtr,
- size_t keyc,
+ Tcl_Size keyc,
Tcl_Obj *const keyv[],
int flags)
{
Dict *dict, *newDict;
- size_t i;
+ Tcl_Size i;
DictGetInternalRep(dictPtr, dict);
if (dict == NULL) {
@@ -1068,7 +1068,7 @@ int
Tcl_DictObjSize(
Tcl_Interp *interp,
Tcl_Obj *dictPtr,
- size_t *sizePtr)
+ Tcl_Size *sizePtr)
{
Dict *dict;
@@ -1281,7 +1281,7 @@ int
Tcl_DictObjPutKeyList(
Tcl_Interp *interp,
Tcl_Obj *dictPtr,
- size_t keyc,
+ Tcl_Size keyc,
Tcl_Obj *const keyv[],
Tcl_Obj *valuePtr)
{
@@ -1292,7 +1292,7 @@ Tcl_DictObjPutKeyList(
if (Tcl_IsShared(dictPtr)) {
Tcl_Panic("%s called with shared object", "Tcl_DictObjPutKeyList");
}
- if (keyc + 1 < 2) {
+ if (keyc < 1) {
Tcl_Panic("%s called with empty key list", "Tcl_DictObjPutKeyList");
}
@@ -1342,7 +1342,7 @@ int
Tcl_DictObjRemoveKeyList(
Tcl_Interp *interp,
Tcl_Obj *dictPtr,
- size_t keyc,
+ Tcl_Size keyc,
Tcl_Obj *const keyv[])
{
Dict *dict;
@@ -2025,7 +2025,7 @@ DictSizeCmd(
Tcl_Obj *const *objv)
{
int result;
- size_t size;
+ Tcl_Size size;
if (objc != 2) {
Tcl_WrongNumArgs(interp, 1, objv, "dictionary");
@@ -2119,7 +2119,7 @@ DictInfoCmd(
}
statsStr = Tcl_HashStats(&dict->table);
- Tcl_SetObjResult(interp, Tcl_NewStringObj(statsStr, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(statsStr, -1));
Tcl_Free(statsStr);
return TCL_OK;
}
@@ -2463,7 +2463,7 @@ DictForNRCmd(
Tcl_Obj *scriptObj, *keyVarObj, *valueVarObj;
Tcl_Obj **varv, *keyObj, *valueObj;
Tcl_DictSearch *searchPtr;
- size_t varc;
+ Tcl_Size varc;
int done;
if (objc != 4) {
@@ -2481,7 +2481,7 @@ DictForNRCmd(
}
if (varc != 2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "must have exactly two variable names", TCL_INDEX_NONE));
+ "must have exactly two variable names", -1));
Tcl_SetErrorCode(interp, "TCL", "SYNTAX", "dict", "for", NULL);
return TCL_ERROR;
}
@@ -2658,7 +2658,7 @@ DictMapNRCmd(
Interp *iPtr = (Interp *) interp;
Tcl_Obj **varv, *keyObj, *valueObj;
DictMapStorage *storagePtr;
- size_t varc;
+ Tcl_Size varc;
int done;
if (objc != 4) {
@@ -2676,7 +2676,7 @@ DictMapNRCmd(
}
if (varc != 2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "must have exactly two variable names", TCL_INDEX_NONE));
+ "must have exactly two variable names", -1));
Tcl_SetErrorCode(interp, "TCL", "SYNTAX", "dict", "map", NULL);
return TCL_ERROR;
}
@@ -2998,7 +2998,7 @@ DictFilterCmd(
Tcl_Obj **varv, *keyObj = NULL, *valueObj = NULL, *resultObj, *boolObj;
Tcl_DictSearch search;
int done, result, satisfied;
- size_t varc;
+ Tcl_Size varc;
const char *pattern;
if (objc < 3) {
@@ -3116,7 +3116,7 @@ DictFilterCmd(
}
if (varc != 2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "must have exactly two variable names", TCL_INDEX_NONE));
+ "must have exactly two variable names", -1));
Tcl_SetErrorCode(interp, "TCL", "SYNTAX", "dict", "filter", NULL);
return TCL_ERROR;
}
@@ -3276,7 +3276,7 @@ DictUpdateCmd(
Interp *iPtr = (Interp *) interp;
Tcl_Obj *dictPtr, *objPtr;
int i;
- size_t dummy;
+ Tcl_Size dummy;
if (objc < 5 || !(objc & 1)) {
Tcl_WrongNumArgs(interp, 1, objv,
@@ -3329,7 +3329,7 @@ FinalizeDictUpdate(
{
Tcl_Obj *dictPtr, *objPtr, **objv;
Tcl_InterpState state;
- size_t i, objc;
+ Tcl_Size i, objc;
Tcl_Obj *varName = (Tcl_Obj *)data[0];
Tcl_Obj *argsObj = (Tcl_Obj *)data[1];
@@ -3479,7 +3479,7 @@ FinalizeDictWith(
int result)
{
Tcl_Obj **pathv;
- size_t pathc;
+ Tcl_Size pathc;
Tcl_InterpState state;
Tcl_Obj *varName = (Tcl_Obj *)data[0];
Tcl_Obj *keysPtr = (Tcl_Obj *)data[1];
@@ -3556,14 +3556,14 @@ Tcl_Obj *
TclDictWithInit(
Tcl_Interp *interp,
Tcl_Obj *dictPtr,
- size_t pathc,
+ Tcl_Size pathc,
Tcl_Obj *const pathv[])
{
Tcl_DictSearch s;
Tcl_Obj *keyPtr, *valPtr, *keysPtr;
int done;
- if (pathc + 1 > 1) {
+ if (pathc > 0) {
dictPtr = TclTraceDictPath(interp, dictPtr, pathc, pathv,
DICT_PATH_READ);
if (dictPtr == NULL) {
@@ -3643,7 +3643,7 @@ TclDictWithFinish(
* the result value from TclDictWithInit. */
{
Tcl_Obj *dictPtr, *leafPtr, *valPtr;
- size_t i, allocdict, keyc;
+ Tcl_Size i, allocdict, keyc;
Tcl_Obj **keyv;
/*
diff --git a/generic/tclDisassemble.c b/generic/tclDisassemble.c
index c06731f..4c81cc5 100644
--- a/generic/tclDisassemble.c
+++ b/generic/tclDisassemble.c
@@ -28,7 +28,7 @@ static int FormatInstruction(ByteCode *codePtr,
static void GetLocationInformation(Proc *procPtr,
Tcl_Obj **fileObjPtr, int *linePtr);
static void PrintSourceToObj(Tcl_Obj *appendObj,
- const char *stringPtr, size_t maxChars);
+ const char *stringPtr, Tcl_Size maxChars);
static void UpdateStringOfInstName(Tcl_Obj *objPtr);
/*
@@ -194,10 +194,10 @@ TclPrintObject(
FILE *outFile, /* The file to print the source to. */
Tcl_Obj *objPtr, /* Points to the Tcl object whose string
* representation should be printed. */
- size_t maxChars) /* Maximum number of chars to print. */
+ Tcl_Size maxChars) /* Maximum number of chars to print. */
{
char *bytes;
- size_t length;
+ Tcl_Size length;
bytes = Tcl_GetStringFromObj(objPtr, &length);
TclPrintSource(outFile, bytes, TclMin(length, maxChars));
@@ -225,7 +225,7 @@ void
TclPrintSource(
FILE *outFile, /* The file to print the source to. */
const char *stringPtr, /* The string to print. */
- size_t maxChars) /* Maximum number of chars to print. */
+ Tcl_Size maxChars) /* Maximum number of chars to print. */
{
Tcl_Obj *bufferObj;
@@ -280,7 +280,7 @@ DisassembleByteCodeObj(
Tcl_AppendPrintfToObj(bufferObj,
"ByteCode %p, refCt %" TCL_Z_MODIFIER "u, epoch %" TCL_Z_MODIFIER "u, interp %p (epoch %" TCL_Z_MODIFIER "u)\n",
codePtr, codePtr->refCount, codePtr->compileEpoch, iPtr, iPtr->compileEpoch);
- Tcl_AppendToObj(bufferObj, " Source ", TCL_INDEX_NONE);
+ Tcl_AppendToObj(bufferObj, " Source ", -1);
PrintSourceToObj(bufferObj, codePtr->source,
TclMin(codePtr->numSrcBytes, 55));
GetLocationInformation(codePtr->procPtr, &fileObj, &line);
@@ -339,7 +339,7 @@ DisassembleByteCodeObj(
(localPtr->flags & VAR_TEMPORARY) ? ", temp" : "",
(localPtr->flags & VAR_RESOLVED) ? ", resolved" : "");
if (TclIsVarTemporary(localPtr)) {
- Tcl_AppendToObj(bufferObj, "\n", TCL_INDEX_NONE);
+ Tcl_AppendToObj(bufferObj, "\n", -1);
} else {
Tcl_AppendPrintfToObj(bufferObj, ", \"%s\"\n",
localPtr->name);
@@ -389,7 +389,7 @@ DisassembleByteCodeObj(
if (numCmds == 0) {
pc = codeStart;
while (pc < codeLimit) {
- Tcl_AppendToObj(bufferObj, " ", TCL_INDEX_NONE);
+ Tcl_AppendToObj(bufferObj, " ", -1);
pc += FormatInstruction(codePtr, pc, bufferObj);
}
return bufferObj;
@@ -451,7 +451,7 @@ DisassembleByteCodeObj(
srcOffset, (srcOffset + srcLen - 1));
}
if (numCmds > 0) {
- Tcl_AppendToObj(bufferObj, "\n", TCL_INDEX_NONE);
+ Tcl_AppendToObj(bufferObj, "\n", -1);
}
/*
@@ -500,14 +500,14 @@ DisassembleByteCodeObj(
*/
while ((pc-codeStart) < codeOffset) {
- Tcl_AppendToObj(bufferObj, " ", TCL_INDEX_NONE);
+ Tcl_AppendToObj(bufferObj, " ", -1);
pc += FormatInstruction(codePtr, pc, bufferObj);
}
Tcl_AppendPrintfToObj(bufferObj, " Command %d: ", i+1);
PrintSourceToObj(bufferObj, (codePtr->source + srcOffset),
TclMin(srcLen, 55));
- Tcl_AppendToObj(bufferObj, "\n", TCL_INDEX_NONE);
+ Tcl_AppendToObj(bufferObj, "\n", -1);
}
if (pc < codeLimit) {
/*
@@ -515,7 +515,7 @@ DisassembleByteCodeObj(
*/
while (pc < codeLimit) {
- Tcl_AppendToObj(bufferObj, " ", TCL_INDEX_NONE);
+ Tcl_AppendToObj(bufferObj, " ", -1);
pc += FormatInstruction(codePtr, pc, bufferObj);
}
}
@@ -652,9 +652,9 @@ FormatInstruction(
}
if (suffixObj) {
const char *bytes;
- size_t length;
+ Tcl_Size length;
- Tcl_AppendToObj(bufferObj, "\t# ", TCL_INDEX_NONE);
+ Tcl_AppendToObj(bufferObj, "\t# ", -1);
bytes = Tcl_GetStringFromObj(codePtr->objArrayPtr[opnd], &length);
PrintSourceToObj(bufferObj, bytes, TclMin(length, 40));
} else if (suffixBuffer[0]) {
@@ -663,12 +663,12 @@ FormatInstruction(
PrintSourceToObj(bufferObj, suffixSrc, 40);
}
}
- Tcl_AppendToObj(bufferObj, "\n", TCL_INDEX_NONE);
+ Tcl_AppendToObj(bufferObj, "\n", -1);
if (auxPtr && auxPtr->type->printProc) {
- Tcl_AppendToObj(bufferObj, "\t\t[", TCL_INDEX_NONE);
+ Tcl_AppendToObj(bufferObj, "\t\t[", -1);
auxPtr->type->printProc(auxPtr->clientData, bufferObj, codePtr,
pcOffset);
- Tcl_AppendToObj(bufferObj, "]\n", TCL_INDEX_NONE);
+ Tcl_AppendToObj(bufferObj, "]\n", -1);
}
return numBytes;
}
@@ -690,7 +690,7 @@ TclGetInnerContext(
const unsigned char *pc,
Tcl_Obj **tosPtr)
{
- size_t objc = 0;
+ Tcl_Size objc = 0;
Tcl_Obj *result;
Interp *iPtr = (Interp *) interp;
@@ -759,7 +759,7 @@ TclGetInnerContext(
iPtr->innerContext = result = Tcl_NewListObj(objc + 1, NULL);
Tcl_IncrRefCount(result);
} else {
- size_t len;
+ Tcl_Size len;
/*
* Reset while keeping the list internalrep as much as possible.
@@ -860,17 +860,17 @@ static void
PrintSourceToObj(
Tcl_Obj *appendObj, /* The object to print the source to. */
const char *stringPtr, /* The string to print. */
- size_t maxChars) /* Maximum number of chars to print. */
+ Tcl_Size maxChars) /* Maximum number of chars to print. */
{
const char *p;
- size_t i = 0, len;
+ Tcl_Size i = 0, len;
if (stringPtr == NULL) {
- Tcl_AppendToObj(appendObj, "\"\"", TCL_INDEX_NONE);
+ Tcl_AppendToObj(appendObj, "\"\"", -1);
return;
}
- Tcl_AppendToObj(appendObj, "\"", TCL_INDEX_NONE);
+ Tcl_AppendToObj(appendObj, "\"", -1);
p = stringPtr;
for (; (*p != '\0') && (i < maxChars); p+=len) {
int ucs4;
@@ -878,27 +878,27 @@ PrintSourceToObj(
len = TclUtfToUCS4(p, &ucs4);
switch (ucs4) {
case '"':
- Tcl_AppendToObj(appendObj, "\\\"", TCL_INDEX_NONE);
+ Tcl_AppendToObj(appendObj, "\\\"", -1);
i += 2;
continue;
case '\f':
- Tcl_AppendToObj(appendObj, "\\f", TCL_INDEX_NONE);
+ Tcl_AppendToObj(appendObj, "\\f", -1);
i += 2;
continue;
case '\n':
- Tcl_AppendToObj(appendObj, "\\n", TCL_INDEX_NONE);
+ Tcl_AppendToObj(appendObj, "\\n", -1);
i += 2;
continue;
case '\r':
- Tcl_AppendToObj(appendObj, "\\r", TCL_INDEX_NONE);
+ Tcl_AppendToObj(appendObj, "\\r", -1);
i += 2;
continue;
case '\t':
- Tcl_AppendToObj(appendObj, "\\t", TCL_INDEX_NONE);
+ Tcl_AppendToObj(appendObj, "\\t", -1);
i += 2;
continue;
case '\v':
- Tcl_AppendToObj(appendObj, "\\v", TCL_INDEX_NONE);
+ Tcl_AppendToObj(appendObj, "\\v", -1);
i += 2;
continue;
default:
@@ -916,9 +916,9 @@ PrintSourceToObj(
}
}
if (*p != '\0') {
- Tcl_AppendToObj(appendObj, "...", TCL_INDEX_NONE);
+ Tcl_AppendToObj(appendObj, "...", -1);
}
- Tcl_AppendToObj(appendObj, "\"", TCL_INDEX_NONE);
+ Tcl_AppendToObj(appendObj, "\"", -1);
}
/*
@@ -972,33 +972,33 @@ DisassembleByteCodeAsDicts(
TclNewObj(descriptor[0]);
if (!(localPtr->flags & (VAR_ARRAY|VAR_LINK))) {
Tcl_ListObjAppendElement(NULL, descriptor[0],
- Tcl_NewStringObj("scalar", TCL_INDEX_NONE));
+ Tcl_NewStringObj("scalar", -1));
}
if (localPtr->flags & VAR_ARRAY) {
Tcl_ListObjAppendElement(NULL, descriptor[0],
- Tcl_NewStringObj("array", TCL_INDEX_NONE));
+ Tcl_NewStringObj("array", -1));
}
if (localPtr->flags & VAR_LINK) {
Tcl_ListObjAppendElement(NULL, descriptor[0],
- Tcl_NewStringObj("link", TCL_INDEX_NONE));
+ Tcl_NewStringObj("link", -1));
}
if (localPtr->flags & VAR_ARGUMENT) {
Tcl_ListObjAppendElement(NULL, descriptor[0],
- Tcl_NewStringObj("arg", TCL_INDEX_NONE));
+ Tcl_NewStringObj("arg", -1));
}
if (localPtr->flags & VAR_TEMPORARY) {
Tcl_ListObjAppendElement(NULL, descriptor[0],
- Tcl_NewStringObj("temp", TCL_INDEX_NONE));
+ Tcl_NewStringObj("temp", -1));
}
if (localPtr->flags & VAR_RESOLVED) {
Tcl_ListObjAppendElement(NULL, descriptor[0],
- Tcl_NewStringObj("resolved", TCL_INDEX_NONE));
+ Tcl_NewStringObj("resolved", -1));
}
if (localPtr->flags & VAR_TEMPORARY) {
Tcl_ListObjAppendElement(NULL, variables,
Tcl_NewListObj(1, descriptor));
} else {
- descriptor[1] = Tcl_NewStringObj(localPtr->name, TCL_INDEX_NONE);
+ descriptor[1] = Tcl_NewStringObj(localPtr->name, -1);
Tcl_ListObjAppendElement(NULL, variables,
Tcl_NewListObj(2, descriptor));
}
@@ -1016,7 +1016,7 @@ DisassembleByteCodeAsDicts(
TclNewObj(inst);
Tcl_ListObjAppendElement(NULL, inst, Tcl_NewStringObj(
- instDesc->name, TCL_INDEX_NONE));
+ instDesc->name, -1));
opnd = pc + 1;
for (i=0 ; i<instDesc->numOperands ; i++) {
switch (instDesc->opTypes[i]) {
@@ -1082,7 +1082,7 @@ DisassembleByteCodeAsDicts(
".%d", val));
} else if (val == -2) {
Tcl_ListObjAppendElement(NULL, inst, Tcl_NewStringObj(
- ".end", TCL_INDEX_NONE));
+ ".end", -1));
} else {
Tcl_ListObjAppendElement(NULL, inst, Tcl_ObjPrintf(
".end-%d", -2-val));
@@ -1115,13 +1115,13 @@ DisassembleByteCodeAsDicts(
TclNewObj(aux);
for (i=0 ; i<(int)codePtr->numAuxDataItems ; i++) {
AuxData *auxData = &codePtr->auxDataArrayPtr[i];
- Tcl_Obj *auxDesc = Tcl_NewStringObj(auxData->type->name, TCL_INDEX_NONE);
+ Tcl_Obj *auxDesc = Tcl_NewStringObj(auxData->type->name, -1);
if (auxData->type->disassembleProc) {
Tcl_Obj *desc;
TclNewObj(desc);
- Tcl_DictObjPut(NULL, desc, Tcl_NewStringObj("name", TCL_INDEX_NONE), auxDesc);
+ Tcl_DictObjPut(NULL, desc, Tcl_NewStringObj("name", -1), auxDesc);
auxDesc = desc;
auxData->type->disassembleProc(auxData->clientData, auxDesc,
codePtr, 0);
@@ -1188,9 +1188,9 @@ DisassembleByteCodeAsDicts(
sourceOffset += Decode(srcOffPtr);
sourceLength = Decode(srcLenPtr);
TclNewObj(cmd);
- Tcl_DictObjPut(NULL, cmd, Tcl_NewStringObj("codefrom", TCL_INDEX_NONE),
+ Tcl_DictObjPut(NULL, cmd, Tcl_NewStringObj("codefrom", -1),
Tcl_NewWideIntObj(codeOffset));
- Tcl_DictObjPut(NULL, cmd, Tcl_NewStringObj("codeto", TCL_INDEX_NONE),
+ Tcl_DictObjPut(NULL, cmd, Tcl_NewStringObj("codeto", -1),
Tcl_NewWideIntObj(codeOffset + codeLength - 1));
/*
@@ -1198,13 +1198,13 @@ DisassembleByteCodeAsDicts(
* characters are present in the source!
*/
- Tcl_DictObjPut(NULL, cmd, Tcl_NewStringObj("scriptfrom", TCL_INDEX_NONE),
+ Tcl_DictObjPut(NULL, cmd, Tcl_NewStringObj("scriptfrom", -1),
Tcl_NewWideIntObj(Tcl_NumUtfChars(codePtr->source,
sourceOffset)));
- Tcl_DictObjPut(NULL, cmd, Tcl_NewStringObj("scriptto", TCL_INDEX_NONE),
+ Tcl_DictObjPut(NULL, cmd, Tcl_NewStringObj("scriptto", -1),
Tcl_NewWideIntObj(Tcl_NumUtfChars(codePtr->source,
sourceOffset + sourceLength - 1)));
- Tcl_DictObjPut(NULL, cmd, Tcl_NewStringObj("script", TCL_INDEX_NONE),
+ Tcl_DictObjPut(NULL, cmd, Tcl_NewStringObj("script", -1),
Tcl_NewStringObj(codePtr->source+sourceOffset, sourceLength));
Tcl_ListObjAppendElement(NULL, commands, cmd);
}
@@ -1223,32 +1223,32 @@ DisassembleByteCodeAsDicts(
*/
TclNewObj(description);
- Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("literals", TCL_INDEX_NONE),
+ Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("literals", -1),
literals);
- Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("variables", TCL_INDEX_NONE),
+ Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("variables", -1),
variables);
- Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("exception", TCL_INDEX_NONE), exn);
- Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("instructions", TCL_INDEX_NONE),
+ Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("exception", -1), exn);
+ Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("instructions", -1),
instructions);
- Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("auxiliary", TCL_INDEX_NONE), aux);
- Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("commands", TCL_INDEX_NONE),
+ Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("auxiliary", -1), aux);
+ Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("commands", -1),
commands);
- Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("script", TCL_INDEX_NONE),
+ Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("script", -1),
Tcl_NewStringObj(codePtr->source, codePtr->numSrcBytes));
- Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("namespace", TCL_INDEX_NONE),
- Tcl_NewStringObj(codePtr->nsPtr->fullName, TCL_INDEX_NONE));
- Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("stackdepth", TCL_INDEX_NONE),
+ Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("namespace", -1),
+ Tcl_NewStringObj(codePtr->nsPtr->fullName, -1));
+ Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("stackdepth", -1),
Tcl_NewWideIntObj(codePtr->maxStackDepth));
- Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("exceptdepth", TCL_INDEX_NONE),
+ Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("exceptdepth", -1),
Tcl_NewWideIntObj(codePtr->maxExceptDepth));
if (line >= 0) {
Tcl_DictObjPut(NULL, description,
- Tcl_NewStringObj("initiallinenumber", TCL_INDEX_NONE),
+ Tcl_NewStringObj("initiallinenumber", -1),
Tcl_NewWideIntObj(line));
}
if (file) {
Tcl_DictObjPut(NULL, description,
- Tcl_NewStringObj("sourcefile", TCL_INDEX_NONE), file);
+ Tcl_NewStringObj("sourcefile", -1), file);
}
return description;
}
@@ -1410,7 +1410,7 @@ Tcl_DisassembleObjCmd(
procPtr = TclOOGetProcFromMethod(methodPtr);
if (procPtr == NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "body not available for this kind of constructor", TCL_INDEX_NONE));
+ "body not available for this kind of constructor", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "DISASSEMBLE",
"METHODTYPE", NULL);
return TCL_ERROR;
@@ -1475,7 +1475,7 @@ Tcl_DisassembleObjCmd(
procPtr = TclOOGetProcFromMethod(methodPtr);
if (procPtr == NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "body not available for this kind of destructor", TCL_INDEX_NONE));
+ "body not available for this kind of destructor", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "DISASSEMBLE",
"METHODTYPE", NULL);
return TCL_ERROR;
@@ -1565,7 +1565,7 @@ Tcl_DisassembleObjCmd(
procPtr = TclOOGetProcFromMethod((Method *)Tcl_GetHashValue(hPtr));
if (procPtr == NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "body not available for this kind of method", TCL_INDEX_NONE));
+ "body not available for this kind of method", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "DISASSEMBLE",
"METHODTYPE", NULL);
return TCL_ERROR;
@@ -1602,7 +1602,7 @@ Tcl_DisassembleObjCmd(
if (codePtr->flags & TCL_BYTECODE_PRECOMPILED) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "may not disassemble prebuilt bytecode", TCL_INDEX_NONE));
+ "may not disassemble prebuilt bytecode", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "DISASSEMBLE",
"BYTECODE", NULL);
return TCL_ERROR;
diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c
index a87eb7f..7deed75 100644
--- a/generic/tclEncoding.c
+++ b/generic/tclEncoding.c
@@ -1415,9 +1415,9 @@ Tcl_ExternalToUtf(
}
if (!noTerminate) {
- if ((int) dstLen < 1) {
- return TCL_CONVERT_NOSPACE;
- }
+ if (dstLen < 1) {
+ return TCL_CONVERT_NOSPACE;
+ }
/*
* If there are any null characters in the middle of the buffer,
* they will converted to the UTF-8 null character (\xC0\x80). To get
@@ -1612,9 +1612,9 @@ Tcl_UtfToExternalDStringEx(
if ((result != TCL_CONVERT_NOSPACE) &&
!(result == TCL_CONVERT_MULTIBYTE && (flags & TCL_ENCODING_END))) {
Tcl_Size nBytesProcessed = (src - srcStart);
- size_t i = soFar + encodingPtr->nullSize - 1;
+ Tcl_Size i = soFar + encodingPtr->nullSize - 1;
/* Loop as DStringSetLength only stores one nul byte at a time */
- while (i+1 >= soFar+1) {
+ while (i >= soFar) {
Tcl_DStringSetLength(dstPtr, i--);
}
if (errorLocPtr) {
diff --git a/generic/tclEnsemble.c b/generic/tclEnsemble.c
index 98f4ae0..cff78f4 100644
--- a/generic/tclEnsemble.c
+++ b/generic/tclEnsemble.c
@@ -106,7 +106,7 @@ static const Tcl_ObjType ensembleCmdType = {
*/
typedef struct {
- size_t epoch; /* Used to confirm when the data in this
+ Tcl_Size epoch; /* Used to confirm when the data in this
* really structure matches up with the
* ensemble. */
Command *token; /* Reference to the command for which this
@@ -125,7 +125,7 @@ NewNsObj(
if (namespacePtr == TclGetGlobalNamespace(nsPtr->interp)) {
return Tcl_NewStringObj("::", 2);
}
- return Tcl_NewStringObj(nsPtr->fullName, TCL_INDEX_NONE);
+ return Tcl_NewStringObj(nsPtr->fullName, -1);
}
/*
@@ -189,7 +189,7 @@ TclNamespaceEnsembleCmd(
switch (index) {
case ENS_CREATE: {
const char *name;
- size_t len;
+ Tcl_Size len;
int allocatedMapFlag = 0;
/*
* Defaults
@@ -289,7 +289,7 @@ TclNamespaceEnsembleCmd(
if (len < 1) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"ensemble subcommand implementations "
- "must be non-empty lists", TCL_INDEX_NONE));
+ "must be non-empty lists", -1));
Tcl_SetErrorCode(interp, "TCL", "ENSEMBLE",
"EMPTY_TARGET", NULL);
Tcl_DictObjDone(&search);
@@ -460,7 +460,7 @@ TclNamespaceEnsembleCmd(
/* -map option */
Tcl_ListObjAppendElement(NULL, resultObj,
- Tcl_NewStringObj(ensembleConfigOptions[CONF_MAP], TCL_INDEX_NONE));
+ Tcl_NewStringObj(ensembleConfigOptions[CONF_MAP], -1));
Tcl_GetEnsembleMappingDict(NULL, token, &tmpObj);
Tcl_ListObjAppendElement(NULL, resultObj,
(tmpObj != NULL) ? tmpObj : Tcl_NewObj());
@@ -475,14 +475,14 @@ TclNamespaceEnsembleCmd(
/* -parameters option */
Tcl_ListObjAppendElement(NULL, resultObj,
- Tcl_NewStringObj(ensembleConfigOptions[CONF_PARAM], TCL_INDEX_NONE));
+ Tcl_NewStringObj(ensembleConfigOptions[CONF_PARAM], -1));
Tcl_GetEnsembleParameterList(NULL, token, &tmpObj);
Tcl_ListObjAppendElement(NULL, resultObj,
(tmpObj != NULL) ? tmpObj : Tcl_NewObj());
/* -prefix option */
Tcl_ListObjAppendElement(NULL, resultObj,
- Tcl_NewStringObj(ensembleConfigOptions[CONF_PREFIX], TCL_INDEX_NONE));
+ Tcl_NewStringObj(ensembleConfigOptions[CONF_PREFIX], -1));
Tcl_GetEnsembleFlags(NULL, token, &flags);
Tcl_ListObjAppendElement(NULL, resultObj,
Tcl_NewBooleanObj(flags & TCL_ENSEMBLE_PREFIX));
@@ -503,7 +503,7 @@ TclNamespaceEnsembleCmd(
Tcl_SetObjResult(interp, resultObj);
} else {
- size_t len;
+ Tcl_Size len;
int allocatedMapFlag = 0;
Tcl_Obj *subcmdObj = NULL, *mapObj = NULL, *paramObj = NULL,
*unknownObj = NULL; /* Defaults, silence gcc 4 warnings */
@@ -577,7 +577,7 @@ TclNamespaceEnsembleCmd(
if (len < 1) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"ensemble subcommand implementations "
- "must be non-empty lists", TCL_INDEX_NONE));
+ "must be non-empty lists", -1));
Tcl_SetErrorCode(interp, "TCL", "ENSEMBLE",
"EMPTY_TARGET", NULL);
Tcl_DictObjDone(&search);
@@ -625,7 +625,7 @@ TclNamespaceEnsembleCmd(
}
case CONF_NAMESPACE:
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "option -namespace is read-only", TCL_INDEX_NONE));
+ "option -namespace is read-only", -1));
Tcl_SetErrorCode(interp, "TCL", "ENSEMBLE", "READ_ONLY",
NULL);
goto freeMapAndError;
@@ -798,12 +798,12 @@ Tcl_SetEnsembleSubcommandList(
if (cmdPtr->objProc != TclEnsembleImplementationCmd) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "command is not an ensemble", TCL_INDEX_NONE));
+ "command is not an ensemble", -1));
Tcl_SetErrorCode(interp, "TCL", "ENSEMBLE", "NOT_ENSEMBLE", NULL);
return TCL_ERROR;
}
if (subcmdList != NULL) {
- size_t length;
+ Tcl_Size length;
if (TclListObjLengthM(interp, subcmdList, &length) != TCL_OK) {
return TCL_ERROR;
@@ -870,11 +870,11 @@ Tcl_SetEnsembleParameterList(
Command *cmdPtr = (Command *) token;
EnsembleConfig *ensemblePtr;
Tcl_Obj *oldList;
- size_t length;
+ Tcl_Size length;
if (cmdPtr->objProc != TclEnsembleImplementationCmd) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "command is not an ensemble", TCL_INDEX_NONE));
+ "command is not an ensemble", -1));
Tcl_SetErrorCode(interp, "TCL", "ENSEMBLE", "NOT_ENSEMBLE", NULL);
return TCL_ERROR;
}
@@ -950,12 +950,12 @@ Tcl_SetEnsembleMappingDict(
if (cmdPtr->objProc != TclEnsembleImplementationCmd) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "command is not an ensemble", TCL_INDEX_NONE));
+ "command is not an ensemble", -1));
Tcl_SetErrorCode(interp, "TCL", "ENSEMBLE", "NOT_ENSEMBLE", NULL);
return TCL_ERROR;
}
if (mapDict != NULL) {
- size_t size;
+ Tcl_Size size;
int done;
Tcl_DictSearch search;
Tcl_Obj *valuePtr;
@@ -1050,12 +1050,12 @@ Tcl_SetEnsembleUnknownHandler(
if (cmdPtr->objProc != TclEnsembleImplementationCmd) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "command is not an ensemble", TCL_INDEX_NONE));
+ "command is not an ensemble", -1));
Tcl_SetErrorCode(interp, "TCL", "ENSEMBLE", "NOT_ENSEMBLE", NULL);
return TCL_ERROR;
}
if (unknownList != NULL) {
- size_t length;
+ Tcl_Size length;
if (TclListObjLengthM(interp, unknownList, &length) != TCL_OK) {
return TCL_ERROR;
@@ -1116,7 +1116,7 @@ Tcl_SetEnsembleFlags(
if (cmdPtr->objProc != TclEnsembleImplementationCmd) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "command is not an ensemble", TCL_INDEX_NONE));
+ "command is not an ensemble", -1));
Tcl_SetErrorCode(interp, "TCL", "ENSEMBLE", "NOT_ENSEMBLE", NULL);
return TCL_ERROR;
}
@@ -1193,7 +1193,7 @@ Tcl_GetEnsembleSubcommandList(
if (cmdPtr->objProc != TclEnsembleImplementationCmd) {
if (interp != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "command is not an ensemble", TCL_INDEX_NONE));
+ "command is not an ensemble", -1));
Tcl_SetErrorCode(interp, "TCL", "ENSEMBLE", "NOT_ENSEMBLE", NULL);
}
return TCL_ERROR;
@@ -1235,7 +1235,7 @@ Tcl_GetEnsembleParameterList(
if (cmdPtr->objProc != TclEnsembleImplementationCmd) {
if (interp != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "command is not an ensemble", TCL_INDEX_NONE));
+ "command is not an ensemble", -1));
Tcl_SetErrorCode(interp, "TCL", "ENSEMBLE", "NOT_ENSEMBLE", NULL);
}
return TCL_ERROR;
@@ -1277,7 +1277,7 @@ Tcl_GetEnsembleMappingDict(
if (cmdPtr->objProc != TclEnsembleImplementationCmd) {
if (interp != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "command is not an ensemble", TCL_INDEX_NONE));
+ "command is not an ensemble", -1));
Tcl_SetErrorCode(interp, "TCL", "ENSEMBLE", "NOT_ENSEMBLE", NULL);
}
return TCL_ERROR;
@@ -1318,7 +1318,7 @@ Tcl_GetEnsembleUnknownHandler(
if (cmdPtr->objProc != TclEnsembleImplementationCmd) {
if (interp != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "command is not an ensemble", TCL_INDEX_NONE));
+ "command is not an ensemble", -1));
Tcl_SetErrorCode(interp, "TCL", "ENSEMBLE", "NOT_ENSEMBLE", NULL);
}
return TCL_ERROR;
@@ -1359,7 +1359,7 @@ Tcl_GetEnsembleFlags(
if (cmdPtr->objProc != TclEnsembleImplementationCmd) {
if (interp != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "command is not an ensemble", TCL_INDEX_NONE));
+ "command is not an ensemble", -1));
Tcl_SetErrorCode(interp, "TCL", "ENSEMBLE", "NOT_ENSEMBLE", NULL);
}
return TCL_ERROR;
@@ -1400,7 +1400,7 @@ Tcl_GetEnsembleNamespace(
if (cmdPtr->objProc != TclEnsembleImplementationCmd) {
if (interp != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "command is not an ensemble", TCL_INDEX_NONE));
+ "command is not an ensemble", -1));
Tcl_SetErrorCode(interp, "TCL", "ENSEMBLE", "NOT_ENSEMBLE", NULL);
}
return TCL_ERROR;
@@ -1539,7 +1539,7 @@ TclMakeEnsemble(
Tcl_DString buf, hiddenBuf;
const char **nameParts = NULL;
const char *cmdName = NULL;
- size_t i, nameCount = 0;
+ Tcl_Size i, nameCount = 0;
int ensembleFlags = 0, hiddenLen;
/*
@@ -1549,7 +1549,7 @@ TclMakeEnsemble(
Tcl_DStringInit(&buf);
Tcl_DStringInit(&hiddenBuf);
TclDStringAppendLiteral(&hiddenBuf, "tcl:");
- Tcl_DStringAppend(&hiddenBuf, name, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&hiddenBuf, name, -1);
TclDStringAppendLiteral(&hiddenBuf, ":");
hiddenLen = Tcl_DStringLength(&hiddenBuf);
if (name[0] == ':' && name[1] == ':') {
@@ -1558,7 +1558,7 @@ TclMakeEnsemble(
*/
cmdName = name;
- Tcl_DStringAppend(&buf, name, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&buf, name, -1);
ensembleFlags = TCL_ENSEMBLE_PREFIX;
} else {
/*
@@ -1574,7 +1574,7 @@ TclMakeEnsemble(
for (i = 0; i < nameCount; ++i) {
TclDStringAppendLiteral(&buf, "::");
- Tcl_DStringAppend(&buf, nameParts[i], TCL_INDEX_NONE);
+ Tcl_DStringAppend(&buf, nameParts[i], -1);
}
}
@@ -1619,10 +1619,10 @@ TclMakeEnsemble(
TclDStringAppendLiteral(&buf, "::");
TclNewObj(mapDict);
for (i=0 ; map[i].name != NULL ; i++) {
- fromObj = Tcl_NewStringObj(map[i].name, TCL_INDEX_NONE);
+ fromObj = Tcl_NewStringObj(map[i].name, -1);
TclNewStringObj(toObj, Tcl_DStringValue(&buf),
Tcl_DStringLength(&buf));
- Tcl_AppendToObj(toObj, map[i].name, TCL_INDEX_NONE);
+ Tcl_AppendToObj(toObj, map[i].name, -1);
Tcl_DictObjPut(NULL, mapDict, fromObj, toObj);
if (map[i].proc || map[i].nreProc) {
@@ -1640,7 +1640,7 @@ TclMakeEnsemble(
map[i].nreProc, map[i].clientData, NULL);
Tcl_DStringSetLength(&hiddenBuf, hiddenLen);
if (Tcl_HideCommand(interp, "___tmp",
- Tcl_DStringAppend(&hiddenBuf, map[i].name, TCL_INDEX_NONE))) {
+ Tcl_DStringAppend(&hiddenBuf, map[i].name, -1))) {
Tcl_Panic("%s", Tcl_GetStringResult(interp));
}
} else {
@@ -1718,7 +1718,7 @@ NsEnsembleImplementationCmdNR(
int reparseCount = 0; /* Number of reparses. */
Tcl_Obj *errorObj; /* Used for building error messages. */
Tcl_Obj *subObj;
- size_t subIdx;
+ Tcl_Size subIdx;
/*
* Must recheck objc since numParameters might have changed. See test
@@ -1727,7 +1727,7 @@ NsEnsembleImplementationCmdNR(
restartEnsembleParse:
subIdx = 1 + ensemblePtr->numParameters;
- if ((size_t)objc < subIdx + 1) {
+ if (objc < subIdx + 1) {
/*
* No subcommand argument. Make error message.
*/
@@ -1737,7 +1737,7 @@ NsEnsembleImplementationCmdNR(
Tcl_DStringInit(&buf);
if (ensemblePtr->parameterList) {
Tcl_DStringAppend(&buf,
- TclGetString(ensemblePtr->parameterList), TCL_INDEX_NONE);
+ TclGetString(ensemblePtr->parameterList), -1);
TclDStringAppendLiteral(&buf, " ");
}
TclDStringAppendLiteral(&buf, "subcommand ?arg ...?");
@@ -1754,7 +1754,7 @@ NsEnsembleImplementationCmdNR(
if (!Tcl_InterpDeleted(interp)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "ensemble activated for deleted namespace", TCL_INDEX_NONE));
+ "ensemble activated for deleted namespace", -1));
Tcl_SetErrorCode(interp, "TCL", "ENSEMBLE", "DEAD", NULL);
}
return TCL_ERROR;
@@ -1821,8 +1821,8 @@ NsEnsembleImplementationCmdNR(
* it (a non-unique prefix produces an error).
*/
char *fullName = NULL; /* Full name of the subcommand. */
- size_t stringLength, i;
- size_t tableLength = ensemblePtr->subcommandTable.numEntries;
+ Tcl_Size stringLength, i;
+ Tcl_Size tableLength = ensemblePtr->subcommandTable.numEntries;
Tcl_Obj *fix;
subcmdName = Tcl_GetStringFromObj(subObj, &stringLength);
@@ -1869,7 +1869,7 @@ NsEnsembleImplementationCmdNR(
* Record the spelling correction for usage message.
*/
- fix = Tcl_NewStringObj(fullName, TCL_INDEX_NONE);
+ fix = Tcl_NewStringObj(fullName, -1);
/*
* Cache for later in the subcommand object.
@@ -1899,7 +1899,7 @@ NsEnsembleImplementationCmdNR(
Tcl_Obj *copyPtr; /* The list of words to dispatch on.
* Will be freed by the dispatch engine. */
Tcl_Obj **copyObjv;
- size_t copyObjc, prefixObjc;
+ Tcl_Size copyObjc, prefixObjc;
TclListObjLengthM(NULL, prefixObj, &prefixObjc);
@@ -1980,12 +1980,12 @@ NsEnsembleImplementationCmdNR(
(ensemblePtr->flags & TCL_ENSEMBLE_PREFIX ? " or ambiguous" : ""),
TclGetString(subObj));
if (ensemblePtr->subcommandTable.numEntries == 1) {
- Tcl_AppendToObj(errorObj, ensemblePtr->subcommandArrayPtr[0], TCL_INDEX_NONE);
+ Tcl_AppendToObj(errorObj, ensemblePtr->subcommandArrayPtr[0], -1);
} else {
- size_t i;
+ Tcl_Size i;
for (i=0 ; i<ensemblePtr->subcommandTable.numEntries-1 ; i++) {
- Tcl_AppendToObj(errorObj, ensemblePtr->subcommandArrayPtr[i], TCL_INDEX_NONE);
+ Tcl_AppendToObj(errorObj, ensemblePtr->subcommandArrayPtr[i], -1);
Tcl_AppendToObj(errorObj, ", ", 2);
}
Tcl_AppendPrintfToObj(errorObj, "or %s",
@@ -2027,8 +2027,8 @@ TclClearRootEnsemble(
int
TclInitRewriteEnsemble(
Tcl_Interp *interp,
- size_t numRemoved,
- size_t numInserted,
+ Tcl_Size numRemoved,
+ Tcl_Size numInserted,
Tcl_Obj *const *objv)
{
Interp *iPtr = (Interp *) interp;
@@ -2040,7 +2040,7 @@ TclInitRewriteEnsemble(
iPtr->ensembleRewrite.numRemovedObjs = numRemoved;
iPtr->ensembleRewrite.numInsertedObjs = numInserted;
} else {
- size_t numIns = iPtr->ensembleRewrite.numInsertedObjs;
+ Tcl_Size numIns = iPtr->ensembleRewrite.numInsertedObjs;
if (numIns < numRemoved) {
iPtr->ensembleRewrite.numRemovedObjs += numRemoved - numIns;
@@ -2119,16 +2119,16 @@ void
TclSpellFix(
Tcl_Interp *interp,
Tcl_Obj *const *objv,
- size_t objc,
- size_t badIdx,
+ Tcl_Size objc,
+ Tcl_Size badIdx,
Tcl_Obj *bad,
Tcl_Obj *fix)
{
Interp *iPtr = (Interp *) interp;
Tcl_Obj *const *search;
Tcl_Obj **store;
- size_t idx;
- size_t size;
+ Tcl_Size idx;
+ Tcl_Size size;
if (iPtr->ensembleRewrite.sourceObjs == NULL) {
iPtr->ensembleRewrite.sourceObjs = objv;
@@ -2244,8 +2244,8 @@ Tcl_Obj *const *
TclFetchEnsembleRoot(
Tcl_Interp *interp,
Tcl_Obj *const *objv,
- size_t objc,
- size_t *objcPtr)
+ Tcl_Size objc,
+ Tcl_Size *objcPtr)
{
Tcl_Obj *const *sourceObjs;
Interp *iPtr = (Interp *) interp;
@@ -2295,9 +2295,9 @@ EnsembleUnknownCallback(
Tcl_Obj *const objv[],
Tcl_Obj **prefixObjPtr)
{
- size_t paramc;
+ Tcl_Size paramc;
int result;
- size_t i, prefixObjc;
+ Tcl_Size i, prefixObjc;
Tcl_Obj **paramv, *unknownCmd, *ensObj;
/*
@@ -2308,7 +2308,7 @@ EnsembleUnknownCallback(
TclNewObj(ensObj);
Tcl_GetCommandFullName(interp, ensemblePtr->token, ensObj);
Tcl_ListObjAppendElement(NULL, unknownCmd, ensObj);
- for (i = 1 ; i < (size_t)objc ; i++) {
+ for (i = 1 ; i < objc ; i++) {
Tcl_ListObjAppendElement(NULL, unknownCmd, objv[i]);
}
TclListObjGetElementsM(NULL, unknownCmd, &paramc, &paramv);
@@ -2326,7 +2326,7 @@ EnsembleUnknownCallback(
if ((result == TCL_OK) && (ensemblePtr->flags & ENSEMBLE_DEAD)) {
if (!Tcl_InterpDeleted(interp)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "unknown subcommand handler deleted its ensemble", TCL_INDEX_NONE));
+ "unknown subcommand handler deleted its ensemble", -1));
Tcl_SetErrorCode(interp, "TCL", "ENSEMBLE", "UNKNOWN_DELETED",
NULL);
}
@@ -2374,16 +2374,16 @@ EnsembleUnknownCallback(
if (result != TCL_ERROR) {
Tcl_ResetResult(interp);
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "unknown subcommand handler returned bad code: ", TCL_INDEX_NONE));
+ "unknown subcommand handler returned bad code: ", -1));
switch (result) {
case TCL_RETURN:
- Tcl_AppendToObj(Tcl_GetObjResult(interp), "return", TCL_INDEX_NONE);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), "return", -1);
break;
case TCL_BREAK:
- Tcl_AppendToObj(Tcl_GetObjResult(interp), "break", TCL_INDEX_NONE);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), "break", -1);
break;
case TCL_CONTINUE:
- Tcl_AppendToObj(Tcl_GetObjResult(interp), "continue", TCL_INDEX_NONE);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), "continue", -1);
break;
default:
Tcl_AppendPrintfToObj(Tcl_GetObjResult(interp), "%d", result);
@@ -2585,7 +2585,7 @@ BuildEnsembleConfig(
{
Tcl_HashSearch search; /* Used for scanning the commands in
* the namespace for this ensemble. */
- size_t i, j;
+ Tcl_Size i, j;
int isNew;
Tcl_HashTable *hash = &ensemblePtr->subcommandTable;
Tcl_HashEntry *hPtr;
@@ -2596,7 +2596,7 @@ BuildEnsembleConfig(
Tcl_InitHashTable(hash, TCL_STRING_KEYS);
if (subList) {
- size_t subc;
+ Tcl_Size subc;
Tcl_Obj **subv, *target, *cmdObj, *cmdPrefixObj;
const char *name;
@@ -2625,7 +2625,7 @@ BuildEnsembleConfig(
name = TclGetString(subv[i+1]);
hPtr = Tcl_CreateHashEntry(hash, name, &isNew);
if (isNew) {
- cmdObj = Tcl_NewStringObj(name, TCL_INDEX_NONE);
+ cmdObj = Tcl_NewStringObj(name, -1);
cmdPrefixObj = Tcl_NewListObj(1, &cmdObj);
Tcl_SetHashValue(hPtr, cmdPrefixObj);
Tcl_IncrRefCount(cmdPrefixObj);
@@ -2663,7 +2663,7 @@ BuildEnsembleConfig(
* programmer (or [::unknown] of course) to provide the procedure.
*/
- cmdObj = Tcl_NewStringObj(name, TCL_INDEX_NONE);
+ cmdObj = Tcl_NewStringObj(name, -1);
cmdPrefixObj = Tcl_NewListObj(1, &cmdObj);
Tcl_SetHashValue(hPtr, cmdPrefixObj);
Tcl_IncrRefCount(cmdPrefixObj);
@@ -2928,12 +2928,12 @@ TclCompileEnsemble(
Command *oldCmdPtr = cmdPtr, *newCmdPtr;
int result, flags = 0, depth = 1, invokeAnyway = 0;
int ourResult = TCL_ERROR;
- size_t i, len, numBytes;
+ Tcl_Size i, len, numBytes;
const char *word;
TclNewObj(replaced);
Tcl_IncrRefCount(replaced);
- if ((int)parsePtr->numWords <= depth) {
+ if (parsePtr->numWords <= depth) {
goto failed;
}
if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD) {
@@ -2998,7 +2998,7 @@ TclCompileEnsemble(
(void) Tcl_GetEnsembleSubcommandList(NULL, ensemble, &listObj);
if (listObj != NULL) {
- size_t sclen;
+ Tcl_Size sclen;
const char *str;
Tcl_Obj *matchObj = NULL;
@@ -3255,20 +3255,20 @@ int
TclAttemptCompileProc(
Tcl_Interp *interp,
Tcl_Parse *parsePtr,
- size_t depth,
+ Tcl_Size depth,
Command *cmdPtr,
CompileEnv *envPtr) /* Holds resulting instructions. */
{
DefineLineInformation;
int result;
- size_t i;
+ Tcl_Size i;
Tcl_Token *saveTokenPtr = parsePtr->tokenPtr;
- size_t savedStackDepth = envPtr->currStackDepth;
+ Tcl_Size savedStackDepth = envPtr->currStackDepth;
unsigned savedCodeNext = envPtr->codeNext - envPtr->codeStart;
- size_t savedAuxDataArrayNext = envPtr->auxDataArrayNext;
- size_t savedExceptArrayNext = envPtr->exceptArrayNext;
+ Tcl_Size savedAuxDataArrayNext = envPtr->auxDataArrayNext;
+ Tcl_Size savedExceptArrayNext = envPtr->exceptArrayNext;
#ifdef TCL_COMPILE_DEBUG
- size_t savedExceptDepth = envPtr->exceptDepth;
+ Tcl_Size savedExceptDepth = envPtr->exceptDepth;
#endif
if (cmdPtr->compileProc == NULL) {
@@ -3398,7 +3398,7 @@ CompileToInvokedCommand(
Tcl_Obj *objPtr, **words;
const char *bytes;
int cmdLit, extraLiteralFlags = LITERAL_CMD_NAME;
- size_t i, numWords, length;
+ Tcl_Size i, numWords, length;
/*
* Push the words of the command. Take care; the command words may be
diff --git a/generic/tclEnv.c b/generic/tclEnv.c
index 6dae72a..ce1bfbe 100644
--- a/generic/tclEnv.c
+++ b/generic/tclEnv.c
@@ -50,7 +50,7 @@ static struct {
* need to track this in case another
* subsystem swaps around the environ array
* like we do. */
- size_t ourEnvironSize; /* Non-zero means that the environ array was
+ Tcl_Size ourEnvironSize; /* Non-zero means that the environ array was
* malloced and has this many total entries
* allocated to it (not all may be in use at
* once). Zero means that the environment
@@ -185,8 +185,8 @@ TclSetupEnv(
p1 = "COMSPEC";
}
#endif
- obj1 = Tcl_NewStringObj(p1, TCL_INDEX_NONE);
- obj2 = Tcl_NewStringObj(p2, TCL_INDEX_NONE);
+ obj1 = Tcl_NewStringObj(p1, -1);
+ obj2 = Tcl_NewStringObj(p2, -1);
Tcl_DStringFree(&envString);
Tcl_IncrRefCount(obj1);
@@ -253,8 +253,8 @@ TclSetEnv(
const char *value) /* New value for variable (UTF-8). */
{
Tcl_DString envString;
- size_t nameLength, valueLength;
- size_t index, length;
+ Tcl_Size nameLength, valueLength;
+ Tcl_Size index, length;
char *p, *oldValue;
const techar *p2;
@@ -453,7 +453,7 @@ TclUnsetEnv(
const char *name) /* Name of variable to remove (UTF-8). */
{
char *oldValue;
- size_t length, index;
+ Tcl_Size length, index;
#ifdef USE_PUTENV_FOR_UNSET
Tcl_DString envString;
char *string;
@@ -469,7 +469,7 @@ TclUnsetEnv(
* needless work and to avoid recursion on the unset.
*/
- if (index == TCL_INDEX_NONE) {
+ if (index == -1) {
Tcl_MutexUnlock(&envMutex);
return;
}
@@ -568,13 +568,13 @@ TclGetEnv(
* value of the environment variable is
* stored. */
{
- size_t length, index;
+ Tcl_Size length, index;
const char *result;
Tcl_MutexLock(&envMutex);
index = TclpFindVariable(name, &length);
result = NULL;
- if (index != TCL_INDEX_NONE) {
+ if (index != -1) {
Tcl_DString envStr;
result = tenviron2utfdstr(tenviron[index], -1, &envStr);
@@ -582,7 +582,7 @@ TclGetEnv(
if (*result == '=') {
result++;
Tcl_DStringInit(valuePtr);
- Tcl_DStringAppend(valuePtr, result, TCL_INDEX_NONE);
+ Tcl_DStringAppend(valuePtr, result, -1);
result = Tcl_DStringValue(valuePtr);
} else {
result = NULL;
diff --git a/generic/tclEvent.c b/generic/tclEvent.c
index a9ed1f6..3025222 100644
--- a/generic/tclEvent.c
+++ b/generic/tclEvent.c
@@ -224,7 +224,7 @@ HandleBgErrors(
Tcl_Preserve(interp);
while (assocPtr->firstBgPtr != NULL) {
int code;
- size_t prefixObjc;
+ Tcl_Size prefixObjc;
Tcl_Obj **prefixObjv, **tempObjv;
/*
@@ -281,7 +281,7 @@ HandleBgErrors(
Tcl_DecrRefCount(keyPtr);
Tcl_WriteChars(errChannel,
- "error in background error handler:\n", TCL_INDEX_NONE);
+ "error in background error handler:\n", -1);
if (valuePtr) {
Tcl_WriteObj(errChannel, valuePtr);
} else {
@@ -343,7 +343,7 @@ TclDefaultBgErrorHandlerObjCmd(
Tcl_DecrRefCount(keyPtr);
if (result != TCL_OK || valuePtr == NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "missing return option \"-level\"", TCL_INDEX_NONE));
+ "missing return option \"-level\"", -1));
Tcl_SetErrorCode(interp, "TCL", "ARGUMENT", "MISSING", NULL);
return TCL_ERROR;
}
@@ -356,7 +356,7 @@ TclDefaultBgErrorHandlerObjCmd(
Tcl_DecrRefCount(keyPtr);
if (result != TCL_OK || valuePtr == NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "missing return option \"-code\"", TCL_INDEX_NONE));
+ "missing return option \"-code\"", -1));
Tcl_SetErrorCode(interp, "TCL", "ARGUMENT", "MISSING", NULL);
return TCL_ERROR;
}
@@ -474,17 +474,17 @@ TclDefaultBgErrorHandlerObjCmd(
Tcl_RestoreInterpState(interp, saved);
Tcl_WriteObj(errChannel, Tcl_GetVar2Ex(interp,
"errorInfo", NULL, TCL_GLOBAL_ONLY));
- Tcl_WriteChars(errChannel, "\n", TCL_INDEX_NONE);
+ Tcl_WriteChars(errChannel, "\n", -1);
} else {
Tcl_DiscardInterpState(saved);
Tcl_WriteChars(errChannel,
- "bgerror failed to handle background error.\n", TCL_INDEX_NONE);
- Tcl_WriteChars(errChannel, " Original error: ", TCL_INDEX_NONE);
+ "bgerror failed to handle background error.\n", -1);
+ Tcl_WriteChars(errChannel, " Original error: ", -1);
Tcl_WriteObj(errChannel, tempObjv[1]);
- Tcl_WriteChars(errChannel, "\n", TCL_INDEX_NONE);
- Tcl_WriteChars(errChannel, " Error in bgerror: ", TCL_INDEX_NONE);
+ Tcl_WriteChars(errChannel, "\n", -1);
+ Tcl_WriteChars(errChannel, " Error in bgerror: ", -1);
Tcl_WriteObj(errChannel, resultPtr);
- Tcl_WriteChars(errChannel, "\n", TCL_INDEX_NONE);
+ Tcl_WriteChars(errChannel, "\n", -1);
}
Tcl_DecrRefCount(resultPtr);
Tcl_Flush(errChannel);
@@ -1572,7 +1572,7 @@ Tcl_VwaitObjCmd(
if (timeout < 0) {
Tcl_ResetResult(interp);
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "timeout must be positive", TCL_INDEX_NONE));
+ "timeout must be positive", -1));
Tcl_SetErrorCode(interp, "TCL", "EVENT", "NEGTIME", NULL);
result = TCL_ERROR;
goto done;
@@ -1652,7 +1652,7 @@ Tcl_VwaitObjCmd(
if ((mask & (TCL_FILE_EVENTS | TCL_IDLE_EVENTS |
TCL_TIMER_EVENTS | TCL_WINDOW_EVENTS)) == 0) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "can't wait: would block forever", TCL_INDEX_NONE));
+ "can't wait: would block forever", -1));
Tcl_SetErrorCode(interp, "TCL", "EVENT", "NO_SOURCES", NULL);
result = TCL_ERROR;
goto done;
@@ -1660,7 +1660,7 @@ Tcl_VwaitObjCmd(
if ((timeout > 0) && ((mask & TCL_TIMER_EVENTS) == 0)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "timer events disabled with timeout specified", TCL_INDEX_NONE));
+ "timer events disabled with timeout specified", -1));
Tcl_SetErrorCode(interp, "TCL", "EVENT", "NO_TIME", NULL);
result = TCL_ERROR;
goto done;
@@ -1688,7 +1688,7 @@ Tcl_VwaitObjCmd(
for (i = 0; i < numItems; i++) {
if (vwaitItems[i].mask) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "file events disabled with channel(s) specified", TCL_INDEX_NONE));
+ "file events disabled with channel(s) specified", -1));
Tcl_SetErrorCode(interp, "TCL", "EVENT", "NO_FILE_EVENT", NULL);
result = TCL_ERROR;
goto done;
@@ -1727,7 +1727,7 @@ Tcl_VwaitObjCmd(
}
if (Tcl_LimitExceeded(interp)) {
Tcl_ResetResult(interp);
- Tcl_SetObjResult(interp, Tcl_NewStringObj("limit exceeded", TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("limit exceeded", -1));
Tcl_SetErrorCode(interp, "TCL", "EVENT", "LIMIT", NULL);
break;
}
@@ -1975,7 +1975,7 @@ Tcl_UpdateObjCmd(
}
if (Tcl_LimitExceeded(interp)) {
Tcl_ResetResult(interp);
- Tcl_SetObjResult(interp, Tcl_NewStringObj("limit exceeded", TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("limit exceeded", -1));
return TCL_ERROR;
}
}
@@ -2047,8 +2047,8 @@ int
Tcl_CreateThread(
Tcl_ThreadId *idPtr, /* Return, the ID of the thread */
Tcl_ThreadCreateProc *proc, /* Main() function of the thread */
- void *clientData, /* The one argument to Main() */
- size_t stackSize, /* Size of stack for the new thread */
+ void *clientData, /* The one argument to Main() */
+ Tcl_Size stackSize, /* Size of stack for the new thread */
int flags) /* Flags controlling behaviour of the new
* thread. */
{
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index 7eb6a0e..047fff5 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -635,7 +635,7 @@ static void FreeExprCodeInternalRep(Tcl_Obj *objPtr);
static ExceptionRange * GetExceptRangeForPc(const unsigned char *pc,
int searchMode, ByteCode *codePtr);
static const char * GetSrcInfoForPc(const unsigned char *pc,
- ByteCode *codePtr, size_t *lengthPtr,
+ ByteCode *codePtr, Tcl_Size *lengthPtr,
const unsigned char **pcBeg, int *cmdIdxPtr);
static Tcl_Obj ** GrowEvaluationStack(ExecEnv *eePtr, size_t growth,
int move);
@@ -1224,10 +1224,10 @@ TclStackFree(
void *
TclStackAlloc(
Tcl_Interp *interp,
- size_t numBytes)
+ Tcl_Size numBytes)
{
Interp *iPtr = (Interp *) interp;
- size_t numWords;
+ Tcl_Size numWords;
if (iPtr == NULL || iPtr->execEnvPtr == NULL) {
return (void *) Tcl_Alloc(numBytes);
@@ -1680,7 +1680,7 @@ TclCompileObj(
}
}
- if ((size_t)word < ctxCopyPtr->nline) {
+ if (word < ctxCopyPtr->nline) {
/*
* Note: We do not care if the line[word] is -1. This is a
* difference and requires a recompile (location changed from
@@ -2049,7 +2049,7 @@ TEBCresume(
Tcl_Obj *objPtr, *valuePtr, *value2Ptr, *part1Ptr, *part2Ptr, *tmpPtr;
Tcl_Obj **objv = NULL;
- size_t length, objc = 0;
+ Tcl_Size length, objc = 0;
int opnd, pcAdjustment;
Var *varPtr, *arrayPtr;
#ifdef TCL_COMPILE_DEBUG
@@ -2377,7 +2377,7 @@ TEBCresume(
if (!corPtr) {
TRACE_APPEND(("ERROR: yield outside coroutine\n"));
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "yield can only be called in a coroutine", TCL_INDEX_NONE));
+ "yield can only be called in a coroutine", -1));
DECACHE_STACK_INFO();
Tcl_SetErrorCode(interp, "TCL", "COROUTINE", "ILLEGAL_YIELD",
NULL);
@@ -2390,8 +2390,8 @@ TEBCresume(
if (traceInstructions) {
TRACE_APPEND(("YIELD...\n"));
} else {
- fprintf(stdout, "%" TCL_Z_MODIFIER "d: (%" TCL_Z_MODIFIER "u) yielding value \"%.30s\"\n",
- iPtr->numLevels, (size_t)(pc - codePtr->codeStart),
+ fprintf(stdout, "%" TCL_Z_MODIFIER "d: (%" TCL_T_MODIFIER "u) yielding value \"%.30s\"\n",
+ iPtr->numLevels, (pc - codePtr->codeStart),
Tcl_GetString(OBJ_AT_TOS));
}
fflush(stdout);
@@ -2408,7 +2408,7 @@ TEBCresume(
TRACE(("[%.30s] => ERROR: yield outside coroutine\n",
O2S(valuePtr)));
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "yieldto can only be called in a coroutine", TCL_INDEX_NONE));
+ "yieldto can only be called in a coroutine", -1));
DECACHE_STACK_INFO();
Tcl_SetErrorCode(interp, "TCL", "COROUTINE", "ILLEGAL_YIELD",
NULL);
@@ -2419,7 +2419,7 @@ TEBCresume(
TRACE(("[%.30s] => ERROR: yield in deleted\n",
O2S(valuePtr)));
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "yieldto called in deleted namespace", TCL_INDEX_NONE));
+ "yieldto called in deleted namespace", -1));
DECACHE_STACK_INFO();
Tcl_SetErrorCode(interp, "TCL", "COROUTINE", "YIELDTO_IN_DELETED",
NULL);
@@ -2433,8 +2433,8 @@ TEBCresume(
TRACE(("[%.30s] => YIELD...\n", O2S(valuePtr)));
} else {
/* FIXME: What is the right thing to trace? */
- fprintf(stdout, "%" TCL_Z_MODIFIER "d: (%" TCL_Z_MODIFIER "u) yielding to [%.30s]\n",
- iPtr->numLevels, (size_t)(pc - codePtr->codeStart),
+ fprintf(stdout, "%" TCL_Z_MODIFIER "d: (%" TCL_T_MODIFIER "u) yielding to [%.30s]\n",
+ iPtr->numLevels, (pc - codePtr->codeStart),
TclGetString(valuePtr));
}
fflush(stdout);
@@ -2482,7 +2482,7 @@ TEBCresume(
if (!(iPtr->varFramePtr->isProcCallFrame & 1)) {
TRACE(("%d => ERROR: tailcall in non-proc context\n", opnd));
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "tailcall can only be called from a proc or lambda", TCL_INDEX_NONE));
+ "tailcall can only be called from a proc or lambda", -1));
DECACHE_STACK_INFO();
Tcl_SetErrorCode(interp, "TCL", "TAILCALL", "ILLEGAL", NULL);
CACHE_STACK_INFO();
@@ -2511,7 +2511,7 @@ TEBCresume(
*/
listPtr = Tcl_NewListObj(opnd, &OBJ_AT_DEPTH(opnd-1));
- nsObjPtr = Tcl_NewStringObj(iPtr->varFramePtr->nsPtr->fullName, TCL_INDEX_NONE);
+ nsObjPtr = Tcl_NewStringObj(iPtr->varFramePtr->nsPtr->fullName, -1);
TclListObjSetElement(interp, listPtr, 0, nsObjPtr);
if (iPtr->varFramePtr->tailcallPtr) {
Tcl_DecrRefCount(iPtr->varFramePtr->tailcallPtr);
@@ -2662,7 +2662,7 @@ TEBCresume(
NEXT_INST_V(1, objc, 0);
case INST_EXPAND_STKTOP: {
- size_t i;
+ Tcl_Size i;
TEBCdata *newTD;
ptrdiff_t oldCatchTopOff, oldTosPtrOff;
@@ -2789,14 +2789,14 @@ TEBCresume(
#ifdef TCL_COMPILE_DEBUG
if (tclTraceExec >= 2) {
- size_t i;
+ Tcl_Size i;
if (traceInstructions) {
strncpy(cmdNameBuf, TclGetString(objv[0]), 20);
TRACE(("%" TCL_Z_MODIFIER "u => call ", objc));
} else {
- fprintf(stdout, "%" TCL_Z_MODIFIER "d: (%" TCL_Z_MODIFIER "u) invoking ", iPtr->numLevels,
- (size_t)(pc - codePtr->codeStart));
+ fprintf(stdout, "%" TCL_Z_MODIFIER "d: (%" TCL_T_MODIFIER "u) invoking ", iPtr->numLevels,
+ (pc - codePtr->codeStart));
}
for (i = 0; i < objc; i++) {
TclPrintObject(stdout, objv[i], 15);
@@ -2836,19 +2836,19 @@ TEBCresume(
cleanup = objc;
#ifdef TCL_COMPILE_DEBUG
if (tclTraceExec >= 2) {
- size_t i;
+ Tcl_Size i;
if (traceInstructions) {
strncpy(cmdNameBuf, TclGetString(objv[0]), 20);
TRACE(("%" TCL_Z_MODIFIER "u => call (implementation %s) ", objc, O2S(objPtr)));
} else {
fprintf(stdout,
- "%" TCL_Z_MODIFIER "d: (%" TCL_Z_MODIFIER "u) invoking (using implementation %s) ",
- iPtr->numLevels, (size_t)(pc - codePtr->codeStart),
+ "%" TCL_Z_MODIFIER "d: (%" TCL_T_MODIFIER "u) invoking (using implementation %s) ",
+ iPtr->numLevels, (pc - codePtr->codeStart),
O2S(objPtr));
}
for (i = 0; i < objc; i++) {
- if (i < (size_t)opnd) {
+ if (i < opnd) {
fprintf(stdout, "<");
TclPrintObject(stdout, objv[i], 15);
fprintf(stdout, ">");
@@ -3047,7 +3047,7 @@ TEBCresume(
{
int storeFlags;
- size_t len;
+ Tcl_Size len;
case INST_STORE_ARRAY4:
opnd = TclGetUInt4AtPtr(pc+1);
@@ -4352,7 +4352,7 @@ TEBCresume(
Object *oPtr;
CallFrame *framePtr;
CallContext *contextPtr;
- size_t skip, newDepth;
+ Tcl_Size skip, newDepth;
case INST_TCLOO_SELF:
framePtr = iPtr->varFramePtr;
@@ -4404,7 +4404,7 @@ TEBCresume(
} else {
Class *classPtr = oPtr->classPtr;
struct MInvoke *miPtr;
- size_t i;
+ Tcl_Size i;
const char *methodType;
if (classPtr == NULL) {
@@ -4431,7 +4431,7 @@ TEBCresume(
iPtr->numLevels,
(size_t)(pc - codePtr->codeStart));
}
- for (i = 0; i < (size_t)opnd; i++) {
+ for (i = 0; i < opnd; i++) {
TclPrintObject(stdout, objv[i], 15);
fprintf(stdout, " ");
}
@@ -4627,7 +4627,7 @@ TEBCresume(
{
int numIndices, nocase, match, cflags;
- size_t slength, length2, fromIdx, toIdx, index, s1len, s2len;
+ Tcl_Size slength, length2, fromIdx, toIdx, index, s1len, s2len;
const char *s1, *s2;
case INST_LIST:
@@ -4730,7 +4730,7 @@ TEBCresume(
index = TclIndexDecode(opnd, length-1);
/* Compute value @ index */
- if (index < length) {
+ if (index >= 0 && index < length) {
objResultPtr = TclArithSeriesObjIndex(interp, valuePtr, index);
if (objResultPtr == NULL) {
CACHE_STACK_INFO();
@@ -4760,7 +4760,7 @@ TEBCresume(
pcAdjustment = 5;
lindexFastPath:
- if (index < (size_t)objc) {
+ if (index >= 0 && index < objc) {
objResultPtr = objv[index];
} else {
TclNewObj(objResultPtr);
@@ -4927,11 +4927,11 @@ TEBCresume(
toIdx = TclIndexDecode(toIdx, objc - 1);
if (toIdx == TCL_INDEX_NONE) {
goto emptyList;
- } else if (toIdx + 1 >= (size_t)objc + 1) {
+ } else if (toIdx >= objc) {
toIdx = objc - 1;
}
- assert (toIdx < (size_t)objc);
+ assert (toIdx >= 0 && toIdx < objc);
/*
assert ( fromIdx != TCL_INDEX_NONE );
*
@@ -4969,7 +4969,7 @@ TEBCresume(
}
match = 0;
if (length > 0) {
- size_t i = 0;
+ Tcl_Size i = 0;
Tcl_Obj *o;
int isArithSeries = TclHasInternalRep(value2Ptr,&tclArithSeriesType.objType);
/*
@@ -5146,7 +5146,7 @@ TEBCresume(
{
int checkEq = ((*pc == INST_EQ) || (*pc == INST_NEQ)
|| (*pc == INST_STR_EQ) || (*pc == INST_STR_NEQ));
- match = TclStringCmp(valuePtr, value2Ptr, checkEq, 0, TCL_INDEX_NONE);
+ match = TclStringCmp(valuePtr, value2Ptr, checkEq, 0, -1);
}
/*
@@ -5268,7 +5268,7 @@ TEBCresume(
}
CACHE_STACK_INFO();
- if (index >= slength) {
+ if (index < 0 || index >= slength) {
TclNewObj(objResultPtr);
} else if (TclIsPureByteArray(valuePtr)) {
objResultPtr = Tcl_NewByteArrayObj(
@@ -5356,7 +5356,7 @@ TEBCresume(
{
Tcl_UniChar *ustring1, *ustring2, *ustring3, *end, *p;
- size_t length3;
+ Tcl_Size length3;
Tcl_Obj *value3Ptr;
case INST_STR_REPLACE:
@@ -5381,23 +5381,23 @@ TEBCresume(
TclDecrRefCount(OBJ_AT_TOS);
(void) POP_OBJECT();
- if ((toIdx == TCL_INDEX_NONE) ||
- (fromIdx + 1 > slength + 1) ||
- (toIdx + 1 < fromIdx + 1)) {
+ if ((toIdx < 0) ||
+ (fromIdx > slength) ||
+ (toIdx < fromIdx)) {
TRACE_APPEND(("\"%.30s\"\n", O2S(valuePtr)));
TclDecrRefCount(value3Ptr);
NEXT_INST_F(1, 0, 0);
}
- if (fromIdx == TCL_INDEX_NONE) {
- fromIdx = TCL_INDEX_START;
+ if (fromIdx < 0) {
+ fromIdx = 0;
}
- if (toIdx + 1 > slength + 1) {
+ if (toIdx > slength) {
toIdx = slength;
}
- if ((fromIdx == TCL_INDEX_START) && (toIdx == slength)) {
+ if ((fromIdx == 0) && (toIdx == slength)) {
TclDecrRefCount(OBJ_AT_TOS);
OBJ_AT_TOS = value3Ptr;
TRACE_APPEND(("\"%.30s\"\n", O2S(value3Ptr)));
@@ -5454,7 +5454,7 @@ TEBCresume(
for (; ustring1 < end; ustring1++) {
if ((*ustring1 == *ustring2) &&
/* Fix bug [69218ab7b]: restrict max compare length. */
- ((size_t)(end-ustring1) >= length2) && (length2==1 ||
+ ((end-ustring1) >= length2) && (length2==1 ||
memcmp(ustring1, ustring2, sizeof(Tcl_UniChar) * length2)
== 0)) {
if (p != ustring1) {
@@ -5561,7 +5561,7 @@ TEBCresume(
{
const char *string1, *string2;
- size_t trim1, trim2;
+ Tcl_Size trim1, trim2;
case INST_STR_TRIM_LEFT:
valuePtr = OBJ_UNDER_TOS; /* String */
@@ -5840,7 +5840,7 @@ TEBCresume(
case INST_RSHIFT:
if (w2 < 0) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "negative shift argument", TCL_INDEX_NONE));
+ "negative shift argument", -1));
#ifdef ERROR_CODE_FOR_EARLY_DETECTED_ARITH_ERROR
DECACHE_STACK_INFO();
Tcl_SetErrorCode(interp, "ARITH", "DOMAIN",
@@ -5889,7 +5889,7 @@ TEBCresume(
case INST_LSHIFT:
if (w2 < 0) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "negative shift argument", TCL_INDEX_NONE));
+ "negative shift argument", -1));
#ifdef ERROR_CODE_FOR_EARLY_DETECTED_ARITH_ERROR
DECACHE_STACK_INFO();
Tcl_SetErrorCode(interp, "ARITH", "DOMAIN",
@@ -5912,7 +5912,7 @@ TEBCresume(
*/
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "integer value too large to represent", TCL_INDEX_NONE));
+ "integer value too large to represent", -1));
#ifdef ERROR_CODE_FOR_EARLY_DETECTED_ARITH_ERROR
DECACHE_STACK_INFO();
Tcl_SetErrorCode(interp, "ARITH", "IOVERFLOW",
@@ -6371,9 +6371,9 @@ TEBCresume(
ForeachInfo *infoPtr;
Tcl_Obj *listPtr, **elements;
ForeachVarList *varListPtr;
- size_t numLists, listLen, numVars, listTmpDepth;
- size_t iterNum, iterMax, iterTmp;
- size_t varIndex, valIndex, i, j;
+ Tcl_Size numLists, listLen, numVars, listTmpDepth;
+ Tcl_Size iterNum, iterMax, iterTmp;
+ Tcl_Size varIndex, valIndex, i, j;
case INST_FOREACH_START:
/*
@@ -6636,14 +6636,14 @@ TEBCresume(
{
int opnd2, allocateDict, done, allocdict;
- size_t i;
+ Tcl_Size i;
Tcl_Obj *dictPtr, *statePtr, *keyPtr, *listPtr, *varNamePtr, *keysPtr;
Tcl_Obj *emptyPtr, **keyPtrPtr;
Tcl_DictSearch *searchPtr;
DictUpdateInfo *duiPtr;
case INST_DICT_VERIFY: {
- size_t size;
+ Tcl_Size size;
dictPtr = OBJ_AT_TOS;
TRACE(("\"%.30s\" => ", O2S(dictPtr)));
if (Tcl_DictObjSize(interp, dictPtr, &size) != TCL_OK) {
@@ -7418,14 +7418,14 @@ TEBCresume(
*/
divideByZero:
- Tcl_SetObjResult(interp, Tcl_NewStringObj("divide by zero", TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("divide by zero", -1));
DECACHE_STACK_INFO();
Tcl_SetErrorCode(interp, "ARITH", "DIVZERO", "divide by zero", NULL);
CACHE_STACK_INFO();
goto gotError;
outOfMemory:
- Tcl_SetObjResult(interp, Tcl_NewStringObj("out of memory", TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("out of memory", -1));
DECACHE_STACK_INFO();
Tcl_SetErrorCode(interp, "ARITH", "OUTOFMEMORY", "out of memory", NULL);
CACHE_STACK_INFO();
@@ -7438,7 +7438,7 @@ TEBCresume(
exponOfZero:
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "exponentiation of zero by negative power", TCL_INDEX_NONE));
+ "exponentiation of zero by negative power", -1));
DECACHE_STACK_INFO();
Tcl_SetErrorCode(interp, "ARITH", "DOMAIN",
"exponentiation of zero by negative power", NULL);
@@ -7466,7 +7466,7 @@ TEBCresume(
}
if ((result == TCL_ERROR) && !(iPtr->flags & ERR_ALREADY_LOGGED)) {
const unsigned char *pcBeg;
- size_t xxx1length;
+ Tcl_Size xxx1length;
bytes = GetSrcInfoForPc(pc, codePtr, &xxx1length, &pcBeg, NULL);
DECACHE_STACK_INFO();
@@ -7633,7 +7633,7 @@ TEBCresume(
instStartCmdFailed:
{
const char *bytes;
- size_t xxx1length;
+ Tcl_Size xxx1length;
xxx1length = 0;
@@ -7999,7 +7999,7 @@ ExecuteExtendedBinaryMathOp(
}
if (invalid) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "negative shift argument", TCL_INDEX_NONE));
+ "negative shift argument", -1));
return GENERAL_ARITHMETIC_ERROR;
}
@@ -8030,7 +8030,7 @@ ExecuteExtendedBinaryMathOp(
*/
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "integer value too large to represent", TCL_INDEX_NONE));
+ "integer value too large to represent", -1));
return GENERAL_ARITHMETIC_ERROR;
}
shift = (int)(*((const Tcl_WideInt *)ptr2));
@@ -8278,7 +8278,7 @@ ExecuteExtendedBinaryMathOp(
if (type2 != TCL_NUMBER_INT) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "exponent too large", TCL_INDEX_NONE));
+ "exponent too large", -1));
return GENERAL_ARITHMETIC_ERROR;
}
@@ -8358,7 +8358,7 @@ ExecuteExtendedBinaryMathOp(
|| (value2Ptr->typePtr != &tclIntType.objType)
|| (Tcl_WideUInt)w2 >= (1<<28)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "exponent too large", TCL_INDEX_NONE));
+ "exponent too large", -1));
return GENERAL_ARITHMETIC_ERROR;
}
Tcl_TakeBignumFromObj(NULL, valuePtr, &big1);
@@ -9064,7 +9064,7 @@ TclGetSrcInfoForPc(
ExtCmdLoc *eclPtr;
ECL *locPtr = NULL;
- size_t srcOffset;
+ Tcl_Size srcOffset;
int i;
Interp *iPtr = (Interp *) *codePtr->interpHandle;
Tcl_HashEntry *hePtr =
@@ -9111,7 +9111,7 @@ GetSrcInfoForPc(
* in codePtr's code. */
ByteCode *codePtr, /* The bytecode sequence in which to look up
* the command source for the pc. */
- size_t *lengthPtr, /* If non-NULL, the location where the length
+ Tcl_Size *lengthPtr, /* If non-NULL, the location where the length
* of the command's source should be stored.
* If NULL, no length is stored. */
const unsigned char **pcBeg,/* If non-NULL, the bytecode location
@@ -9121,11 +9121,11 @@ GetSrcInfoForPc(
* of the command containing the pc should
* be stored. */
{
- size_t pcOffset = (size_t)(pc - codePtr->codeStart);
- size_t numCmds = codePtr->numCommands;
+ Tcl_Size pcOffset = pc - codePtr->codeStart;
+ Tcl_Size numCmds = codePtr->numCommands;
unsigned char *codeDeltaNext, *codeLengthNext;
unsigned char *srcDeltaNext, *srcLengthNext;
- size_t codeOffset, codeLen, codeEnd, srcOffset, srcLen, delta, i;
+ Tcl_Size codeOffset, codeLen, codeEnd, srcOffset, srcLen, delta, i;
int bestDist = INT_MAX; /* Distance of pc to best cmd's start pc. */
int bestSrcOffset = -1; /* Initialized to avoid compiler warning. */
int bestSrcLength = -1; /* Initialized to avoid compiler warning. */
@@ -9365,16 +9365,16 @@ TclExprFloatError(
if ((errno == EDOM) || isnan(value)) {
s = "domain error: argument not in valid range";
- Tcl_SetObjResult(interp, Tcl_NewStringObj(s, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(s, -1));
Tcl_SetErrorCode(interp, "ARITH", "DOMAIN", s, NULL);
} else if ((errno == ERANGE) || isinf(value)) {
if (value == 0.0) {
s = "floating-point value too small to represent";
- Tcl_SetObjResult(interp, Tcl_NewStringObj(s, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(s, -1));
Tcl_SetErrorCode(interp, "ARITH", "UNDERFLOW", s, NULL);
} else {
s = "floating-point value too large to represent";
- Tcl_SetObjResult(interp, Tcl_NewStringObj(s, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(s, -1));
Tcl_SetErrorCode(interp, "ARITH", "OVERFLOW", s, NULL);
}
} else {
diff --git a/generic/tclFCmd.c b/generic/tclFCmd.c
index a34e80a..5f329a1 100644
--- a/generic/tclFCmd.c
+++ b/generic/tclFCmd.c
@@ -221,7 +221,7 @@ TclFileMakeDirsCmd(
{
Tcl_Obj *errfile = NULL;
int result, i;
- size_t j, pobjc;
+ Tcl_Size j, pobjc;
Tcl_Obj *split = NULL;
Tcl_Obj *target = NULL;
Tcl_StatBuf statBuf;
@@ -874,7 +874,7 @@ FileBasename(
TCL_UNUSED(Tcl_Interp *), /* Interp, for error return. */
Tcl_Obj *pathPtr) /* Path whose basename to extract. */
{
- size_t objc;
+ Tcl_Size objc;
Tcl_Obj *splitPtr;
Tcl_Obj *resultPtr = NULL;
@@ -947,7 +947,7 @@ TclFileAttrsCmd(
const char *const *attributeStrings;
const char **attributeStringsAllocated = NULL;
Tcl_Obj *objStrings = NULL;
- size_t numObjStrings = TCL_INDEX_NONE;
+ Tcl_Size numObjStrings = TCL_INDEX_NONE;
Tcl_Obj *filePtr;
if (objc < 2) {
@@ -971,7 +971,7 @@ TclFileAttrsCmd(
attributeStrings = Tcl_FSFileAttrStrings(filePtr, &objStrings);
if (attributeStrings == NULL) {
- size_t index;
+ Tcl_Size index;
Tcl_Obj *objPtr;
if (objStrings == NULL) {
@@ -1042,7 +1042,7 @@ TclFileAttrsCmd(
res = Tcl_FSFileAttrsGet(interp, index, filePtr, &objPtrAttr);
if (res == TCL_OK) {
Tcl_Obj *objPtr =
- Tcl_NewStringObj(attributeStrings[index], TCL_INDEX_NONE);
+ Tcl_NewStringObj(attributeStrings[index], -1);
Tcl_ListObjAppendElement(interp, listPtr, objPtr);
Tcl_ListObjAppendElement(interp, listPtr, objPtrAttr);
@@ -1492,7 +1492,7 @@ TclFileTemporaryCmd(
return TCL_ERROR;
}
}
- Tcl_SetObjResult(interp, Tcl_NewStringObj(Tcl_GetChannelName(chan), TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(Tcl_GetChannelName(chan), -1));
return TCL_OK;
}
diff --git a/generic/tclFileName.c b/generic/tclFileName.c
index 2581d37..f8a0da1 100644
--- a/generic/tclFileName.c
+++ b/generic/tclFileName.c
@@ -381,8 +381,8 @@ Tcl_GetPathType(
Tcl_PathType
TclpGetNativePathType(
Tcl_Obj *pathPtr, /* Native path of interest */
- size_t *driveNameLengthPtr, /* Returns length of drive, if non-NULL and
- * path was absolute */
+ Tcl_Size *driveNameLengthPtr, /* Returns length of drive, if non-NULL and
+ * path was absolute */
Tcl_Obj **driveNameRef)
{
Tcl_PathType type = TCL_PATH_ABSOLUTE;
@@ -465,7 +465,7 @@ TclpGetNativePathType(
Tcl_Obj *
TclpNativeSplitPath(
Tcl_Obj *pathPtr, /* Path to split. */
- size_t *lenPtr) /* int to store number of path elements. */
+ Tcl_Size *lenPtr) /* int to store number of path elements. */
{
Tcl_Obj *resultPtr = NULL; /* Needed only to prevent gcc warnings. */
@@ -522,14 +522,14 @@ TclpNativeSplitPath(
void
Tcl_SplitPath(
const char *path, /* Pointer to string containing a path. */
- size_t *argcPtr, /* Pointer to location to fill in with the
+ Tcl_Size *argcPtr, /* Pointer to location to fill in with the
* number of elements in the path. */
const char ***argvPtr) /* Pointer to place to store pointer to array
* of pointers to path elements. */
{
Tcl_Obj *resultPtr = NULL; /* Needed only to prevent gcc warnings. */
Tcl_Obj *tmpPtr, *eltPtr;
- size_t i, size, len;
+ Tcl_Size i, size, len;
char *p;
const char *str;
@@ -537,7 +537,7 @@ Tcl_SplitPath(
* Perform the splitting, using objectified, vfs-aware code.
*/
- tmpPtr = Tcl_NewStringObj(path, TCL_INDEX_NONE);
+ tmpPtr = Tcl_NewStringObj(path, -1);
Tcl_IncrRefCount(tmpPtr);
resultPtr = Tcl_FSSplitPath(tmpPtr, argcPtr);
Tcl_IncrRefCount(resultPtr);
@@ -758,7 +758,7 @@ SplitWinPath(
Tcl_Obj *
Tcl_FSJoinToPath(
Tcl_Obj *pathPtr, /* Valid path or NULL. */
- size_t objc, /* Number of array elements to join */
+ Tcl_Size objc, /* Number of array elements to join */
Tcl_Obj *const objv[]) /* Path elements to join. */
{
if (pathPtr == NULL) {
@@ -774,7 +774,7 @@ Tcl_FSJoinToPath(
pair[1] = objv[0];
return TclJoinPath(2, pair, 0);
} else {
- size_t elemc = objc + 1;
+ Tcl_Size elemc = objc + 1;
Tcl_Obj *ret, **elemv = (Tcl_Obj**)Tcl_Alloc(elemc*sizeof(Tcl_Obj *));
elemv[0] = pathPtr;
@@ -927,11 +927,11 @@ TclpNativeJoinPath(
char *
Tcl_JoinPath(
- size_t argc,
+ Tcl_Size argc,
const char *const *argv,
Tcl_DString *resultPtr) /* Pointer to previously initialized DString */
{
- size_t i, len;
+ Tcl_Size i, len;
Tcl_Obj *listObj;
Tcl_Obj *resultObj;
const char *resultStr;
@@ -943,7 +943,7 @@ Tcl_JoinPath(
TclNewObj(listObj);
for (i = 0; i < argc; i++) {
Tcl_ListObjAppendElement(NULL, listObj,
- Tcl_NewStringObj(argv[i], TCL_INDEX_NONE));
+ Tcl_NewStringObj(argv[i], -1));
}
/*
@@ -1003,7 +1003,7 @@ Tcl_TranslateFileName(
Tcl_DString *bufferPtr) /* Uninitialized or free DString filled with
* name. */
{
- Tcl_Obj *path = Tcl_NewStringObj(name, TCL_INDEX_NONE);
+ Tcl_Obj *path = Tcl_NewStringObj(name, -1);
Tcl_Obj *transPtr;
Tcl_IncrRefCount(path);
@@ -1118,7 +1118,7 @@ Tcl_GlobObjCmd(
Tcl_Obj *const objv[]) /* Argument objects. */
{
int i, globFlags, join, dir, result;
- size_t length;
+ Tcl_Size length;
char *string;
const char *separators;
Tcl_Obj *typePtr, *look;
@@ -1171,7 +1171,7 @@ Tcl_GlobObjCmd(
case GLOB_DIR: /* -dir */
if (i == (objc-1)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "missing argument to \"-directory\"", TCL_INDEX_NONE));
+ "missing argument to \"-directory\"", -1));
Tcl_SetErrorCode(interp, "TCL", "ARGUMENT", "MISSING", NULL);
return TCL_ERROR;
}
@@ -1199,7 +1199,7 @@ Tcl_GlobObjCmd(
case GLOB_PATH: /* -path */
if (i == (objc-1)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "missing argument to \"-path\"", TCL_INDEX_NONE));
+ "missing argument to \"-path\"", -1));
Tcl_SetErrorCode(interp, "TCL", "ARGUMENT", "MISSING", NULL);
return TCL_ERROR;
}
@@ -1220,7 +1220,7 @@ Tcl_GlobObjCmd(
case GLOB_TYPE: /* -types */
if (i == (objc-1)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "missing argument to \"-types\"", TCL_INDEX_NONE));
+ "missing argument to \"-types\"", -1));
Tcl_SetErrorCode(interp, "TCL", "ARGUMENT", "MISSING", NULL);
return TCL_ERROR;
}
@@ -1240,7 +1240,7 @@ Tcl_GlobObjCmd(
if ((globFlags & TCL_GLOBMODE_TAILS) && (pathOrDir == NULL)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"\"-tails\" must be used with either "
- "\"-directory\" or \"-path\"", TCL_INDEX_NONE));
+ "\"-directory\" or \"-path\"", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "GLOB",
"BADOPTIONCOMBINATION", NULL);
return TCL_ERROR;
@@ -1257,7 +1257,7 @@ Tcl_GlobObjCmd(
}
if (dir == PATH_GENERAL) {
- size_t pathlength;
+ Tcl_Size pathlength;
const char *last;
const char *first = Tcl_GetStringFromObj(pathOrDir,&pathlength);
@@ -1291,7 +1291,7 @@ Tcl_GlobObjCmd(
* in TclGlob requires a non-NULL pathOrDir.
*/
- Tcl_DStringAppend(&pref, first, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&pref, first, -1);
globFlags &= ~TCL_GLOBMODE_TAILS;
pathOrDir = NULL;
} else {
@@ -1330,7 +1330,7 @@ Tcl_GlobObjCmd(
}
}
if (*search != '\0') {
- Tcl_DStringAppend(&prefix, search, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&prefix, search, -1);
}
Tcl_DStringFree(&pref);
}
@@ -1416,7 +1416,7 @@ Tcl_GlobObjCmd(
} else {
Tcl_Obj *item;
- size_t llen;
+ Tcl_Size llen;
if ((TclListObjLengthM(NULL, look, &llen) == TCL_OK)
&& (llen == 3)) {
@@ -1460,7 +1460,7 @@ Tcl_GlobObjCmd(
badMacTypesArg:
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"only one MacOS type or creator argument"
- " to \"-types\" allowed", TCL_INDEX_NONE));
+ " to \"-types\" allowed", -1));
result = TCL_ERROR;
Tcl_SetErrorCode(interp, "TCL", "ARGUMENT", "BAD", NULL);
join = 0;
@@ -1640,9 +1640,9 @@ TclGlob(
Tcl_IncrRefCount(pathPrefix);
} else if (pathPrefix == NULL && (tail[0] == '/'
|| (tail[0] == '\\' && tail[1] == '\\'))) {
- size_t driveNameLen;
+ Tcl_Size driveNameLen;
Tcl_Obj *driveName;
- Tcl_Obj *temp = Tcl_NewStringObj(tail, TCL_INDEX_NONE);
+ Tcl_Obj *temp = Tcl_NewStringObj(tail, -1);
Tcl_IncrRefCount(temp);
switch (TclGetPathType(temp, NULL, &driveNameLen, &driveName)) {
@@ -1708,7 +1708,7 @@ TclGlob(
*/
if (pathPrefix == NULL) {
- size_t driveNameLen;
+ Tcl_Size driveNameLen;
Tcl_Obj *driveName;
if (TclFSNonnativePathType(tail, strlen(tail), NULL,
&driveNameLen, &driveName) == TCL_PATH_ABSOLUTE) {
@@ -1793,9 +1793,9 @@ TclGlob(
*/
if (globFlags & TCL_GLOBMODE_TAILS) {
- size_t objc, i;
+ Tcl_Size objc, i;
Tcl_Obj **objv;
- size_t prefixLen;
+ Tcl_Size prefixLen;
const char *pre;
/*
@@ -1823,7 +1823,7 @@ TclGlob(
TclListObjGetElementsM(NULL, filenamesObj, &objc, &objv);
for (i = 0; i< objc; i++) {
- size_t len;
+ Tcl_Size len;
const char *oldStr = Tcl_GetStringFromObj(objv[i], &len);
Tcl_Obj *elem;
@@ -2033,14 +2033,14 @@ DoGlob(
break;
}
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "unmatched open-brace in file name", TCL_INDEX_NONE));
+ "unmatched open-brace in file name", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "GLOB", "BALANCE",
NULL);
return TCL_ERROR;
} else if (*p == '}') {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "unmatched close-brace in file name", TCL_INDEX_NONE));
+ "unmatched close-brace in file name", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "GLOB", "BALANCE",
NULL);
return TCL_ERROR;
@@ -2072,7 +2072,7 @@ DoGlob(
SkipToChar(&p, ',');
Tcl_DStringSetLength(&newName, baseLength);
Tcl_DStringAppend(&newName, element, p-element);
- Tcl_DStringAppend(&newName, closeBrace+1, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&newName, closeBrace+1, -1);
result = DoGlob(interp, matchesObj, separators, pathPtr, flags,
Tcl_DStringValue(&newName), types);
if (result != TCL_OK) {
@@ -2147,7 +2147,7 @@ DoGlob(
pattern, &dirOnly);
*p = save;
if (result == TCL_OK) {
- size_t i, subdirc, repair = TCL_INDEX_NONE;
+ Tcl_Size i, subdirc, repair = -1;
Tcl_Obj **subdirv;
result = TclListObjGetElementsM(interp, subdirsPtr,
@@ -2158,14 +2158,14 @@ DoGlob(
result = DoGlob(interp, matchesObj, separators, subdirv[i],
1, p+1, types);
if (copy) {
- size_t end;
+ Tcl_Size end;
Tcl_DecrRefCount(subdirv[i]);
subdirv[i] = copy;
TclListObjLengthM(NULL, matchesObj, &end);
- while (repair + 1 <= end) {
+ while (repair < end) {
const char *bytes;
- size_t numBytes;
+ Tcl_Size numBytes;
Tcl_Obj *fixme, *newObj;
Tcl_ListObjIndex(NULL, matchesObj, repair, &fixme);
diff --git a/generic/tclFileSystem.h b/generic/tclFileSystem.h
index 852bbbd..e986d34 100644
--- a/generic/tclFileSystem.h
+++ b/generic/tclFileSystem.h
@@ -48,13 +48,13 @@ MODULE_SCOPE const Tcl_Filesystem tclNativeFilesystem;
MODULE_SCOPE Tcl_PathType TclFSGetPathType(Tcl_Obj *pathPtr,
const Tcl_Filesystem **filesystemPtrPtr,
- size_t *driveNameLengthPtr);
+ Tcl_Size *driveNameLengthPtr);
MODULE_SCOPE Tcl_PathType TclFSNonnativePathType(const char *pathPtr,
- size_t pathLen, const Tcl_Filesystem **filesystemPtrPtr,
- size_t *driveNameLengthPtr, Tcl_Obj **driveNameRef);
+ Tcl_Size pathLen, const Tcl_Filesystem **filesystemPtrPtr,
+ Tcl_Size *driveNameLengthPtr, Tcl_Obj **driveNameRef);
MODULE_SCOPE Tcl_PathType TclGetPathType(Tcl_Obj *pathPtr,
const Tcl_Filesystem **filesystemPtrPtr,
- size_t *driveNameLengthPtr, Tcl_Obj **driveNameRef);
+ Tcl_Size *driveNameLengthPtr, Tcl_Obj **driveNameRef);
MODULE_SCOPE int TclFSEpochOk(size_t filesystemEpoch);
MODULE_SCOPE int TclFSCwdIsNative(void);
MODULE_SCOPE Tcl_Obj * TclWinVolumeRelativeNormalize(Tcl_Interp *interp,
diff --git a/generic/tclHash.c b/generic/tclHash.c
index 5cfc63c..e9cf368 100644
--- a/generic/tclHash.c
+++ b/generic/tclHash.c
@@ -438,7 +438,7 @@ Tcl_DeleteHashTable(
{
Tcl_HashEntry *hPtr, *nextPtr;
const Tcl_HashKeyType *typePtr;
- size_t i;
+ Tcl_Size i;
if (tablePtr->keyType == TCL_STRING_KEYS) {
typePtr = &tclStringHashKeyType;
@@ -587,7 +587,7 @@ Tcl_HashStats(
Tcl_HashTable *tablePtr) /* Table for which to produce stats. */
{
#define NUM_COUNTERS 10
- size_t i;
+ Tcl_Size i;
TCL_HASH_TYPE count[NUM_COUNTERS], overflow, j;
double average, tmp;
Tcl_HashEntry *hPtr;
diff --git a/generic/tclHistory.c b/generic/tclHistory.c
index 8083b4d..dc5a67d 100644
--- a/generic/tclHistory.c
+++ b/generic/tclHistory.c
@@ -69,7 +69,7 @@ Tcl_RecordAndEval(
* Call Tcl_RecordAndEvalObj to do the actual work.
*/
- cmdPtr = Tcl_NewStringObj(cmd, TCL_INDEX_NONE);
+ cmdPtr = Tcl_NewStringObj(cmd, -1);
Tcl_IncrRefCount(cmdPtr);
result = Tcl_RecordAndEvalObj(interp, cmdPtr, flags);
diff --git a/generic/tclIO.c b/generic/tclIO.c
index 5782000..d39a0f0 100644
--- a/generic/tclIO.c
+++ b/generic/tclIO.c
@@ -1225,7 +1225,7 @@ Tcl_UnregisterChannel(
if (interp != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"illegal recursive call to close through close-handler"
- " of channel", TCL_INDEX_NONE));
+ " of channel", -1));
}
return TCL_ERROR;
}
@@ -2701,7 +2701,7 @@ CheckForDeadChannel(
Tcl_SetErrno(EINVAL);
if (interp) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "unable to access channel: invalid channel", TCL_INDEX_NONE));
+ "unable to access channel: invalid channel", -1));
}
return 1;
}
@@ -2899,7 +2899,7 @@ FlushChannel(
if (interp != NULL && !TclChanCaughtErrorBypass(interp,
(Tcl_Channel) chanPtr)) {
Tcl_SetObjResult(interp,
- Tcl_NewStringObj(Tcl_PosixError(interp), TCL_INDEX_NONE));
+ Tcl_NewStringObj(Tcl_PosixError(interp), -1));
}
/*
@@ -3462,7 +3462,7 @@ TclClose(
if (interp) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"illegal recursive call to close through close-handler"
- " of channel", TCL_INDEX_NONE));
+ " of channel", -1));
}
return TCL_ERROR;
}
@@ -3565,7 +3565,7 @@ TclClose(
Tcl_SetErrno(stickyError);
if (interp != NULL) {
Tcl_SetObjResult(interp,
- Tcl_NewStringObj(Tcl_PosixError(interp), TCL_INDEX_NONE));
+ Tcl_NewStringObj(Tcl_PosixError(interp), -1));
}
return TCL_ERROR;
}
@@ -3583,7 +3583,7 @@ TclClose(
&& 0 == Tcl_GetCharLength(Tcl_GetObjResult(interp))) {
Tcl_SetErrno(result);
Tcl_SetObjResult(interp,
- Tcl_NewStringObj(Tcl_PosixError(interp), TCL_INDEX_NONE));
+ Tcl_NewStringObj(Tcl_PosixError(interp), -1));
}
if (result != 0) {
return TCL_ERROR;
@@ -3655,7 +3655,7 @@ Tcl_CloseEx(
if (chanPtr != statePtr->topChanPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "half-close not applicable to stack of transformations", TCL_INDEX_NONE));
+ "half-close not applicable to stack of transformations", -1));
return TCL_ERROR;
}
@@ -3688,7 +3688,7 @@ Tcl_CloseEx(
if (interp) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"illegal recursive call to close through close-handler"
- " of channel", TCL_INDEX_NONE));
+ " of channel", -1));
}
return TCL_ERROR;
}
@@ -6269,7 +6269,7 @@ ReadChars(
(void) Tcl_GetStringFromObj(objPtr, &numBytes);
Tcl_AppendToObj(objPtr, NULL, dstLimit);
if (toRead == srcLen) {
- size_t size;
+ Tcl_Size size;
dst = TclGetStringStorage(objPtr, &size) + numBytes;
dstLimit = (size - numBytes) > INT_MAX ? INT_MAX : (size - numBytes);
@@ -6565,7 +6565,7 @@ ReadChars(
* precautions.
*/
- if (nextPtr->nextRemoved < (size_t)srcLen) {
+ if (nextPtr->nextRemoved < srcLen) {
Tcl_Panic("Buffer Underflow, BUFFER_PADDING not enough");
}
@@ -7724,7 +7724,7 @@ Tcl_SetChannelBufferSize(
* Clip the buffer size to force it into the [1,1M] range
*/
- if (sz < 1 || sz > (TCL_INDEX_NONE>>1)) {
+ if (sz < 1) {
sz = 1;
} else if (sz > MAX_CHANNEL_BUFFER_SIZE) {
sz = MAX_CHANNEL_BUFFER_SIZE;
@@ -7827,10 +7827,10 @@ Tcl_BadChannelOption(
Tcl_Obj *errObj;
Tcl_DStringInit(&ds);
- Tcl_DStringAppend(&ds, genericopt, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&ds, genericopt, -1);
if (optionList && (*optionList)) {
TclDStringAppendLiteral(&ds, " ");
- Tcl_DStringAppend(&ds, optionList, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&ds, optionList, -1);
}
if (Tcl_SplitList(interp, Tcl_DStringValue(&ds),
&argc, &argv) != TCL_OK) {
@@ -7984,7 +7984,7 @@ Tcl_GetChannelOption(
sprintf(buf, "%c", statePtr->inEofChar);
}
if (len > 0) {
- Tcl_DStringAppend(dsPtr, buf, TCL_INDEX_NONE);
+ Tcl_DStringAppend(dsPtr, buf, -1);
return TCL_OK;
}
Tcl_DStringAppendElement(dsPtr, buf);
@@ -8112,7 +8112,7 @@ Tcl_SetChannelOption(
if (interp) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"unable to set channel options: background copy in"
- " progress", TCL_INDEX_NONE));
+ " progress", -1));
}
return TCL_ERROR;
}
@@ -8163,7 +8163,7 @@ Tcl_SetChannelOption(
} else if (interp) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"bad value for -buffering: must be one of"
- " full, line, or none", TCL_INDEX_NONE));
+ " full, line, or none", -1));
return TCL_ERROR;
}
return TCL_OK;
@@ -8234,7 +8234,7 @@ Tcl_SetChannelOption(
if (interp) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"bad value for -eofchar: must be non-NUL ASCII"
- " character", TCL_INDEX_NONE));
+ " character", -1));
}
Tcl_Free((void *)argv);
return TCL_ERROR;
@@ -8281,7 +8281,7 @@ Tcl_SetChannelOption(
if (interp) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"bad value for -translation: must be a one or two"
- " element list", TCL_INDEX_NONE));
+ " element list", -1));
}
Tcl_Free((void *)argv);
return TCL_ERROR;
@@ -8311,7 +8311,7 @@ Tcl_SetChannelOption(
if (interp) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"bad value for -translation: must be one of "
- "auto, binary, cr, lf, crlf, or platform", TCL_INDEX_NONE));
+ "auto, binary, cr, lf, crlf, or platform", -1));
}
Tcl_Free((void *)argv);
return TCL_ERROR;
@@ -8360,7 +8360,7 @@ Tcl_SetChannelOption(
if (interp) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"bad value for -translation: must be one of "
- "auto, binary, cr, lf, crlf, or platform", TCL_INDEX_NONE));
+ "auto, binary, cr, lf, crlf, or platform", -1));
}
Tcl_Free((void *)argv);
return TCL_ERROR;
@@ -9684,7 +9684,7 @@ CopyData(
int result = TCL_OK;
Tcl_Size sizeb;
Tcl_WideInt total;
- Tcl_WideInt size; /* TODO - be careful if total and size are made unsigned */
+ Tcl_WideInt size;
const char *buffer;
int inBinary, outBinary, sameEncoding;
/* Encoding control */
@@ -9769,7 +9769,7 @@ CopyData(
size = DoReadChars(inStatePtr->topChanPtr, bufObj, sizeb,
0 /* No append */);
}
- underflow = (size >= 0) && ((size_t)size < sizeb); /* Input underflow */
+ underflow = (size >= 0) && (size < sizeb); /* Input underflow */
}
if (size < 0) {
@@ -9853,7 +9853,7 @@ CopyData(
* unsuitable for updating totals and toRead.
*/
- if (sizeb == TCL_INDEX_NONE) {
+ if (sizeb < 0) {
writeError:
if (interp) {
TclNewObj(errObj);
@@ -10085,7 +10085,7 @@ DoRead(
while (!bufPtr || /* We got no buffer! OR */
(!IsBufferFull(bufPtr) && /* Our buffer has room AND */
- ((size_t)BytesLeft(bufPtr) < bytesToRead))) {
+ ((Tcl_Size) BytesLeft(bufPtr) < bytesToRead))) {
/* Not enough bytes in it yet
* to fill the dst */
int code;
@@ -10520,7 +10520,7 @@ Tcl_GetChannelNamesEx(
&& (pattern[2] == 'd'))) {
if ((Tcl_FindHashEntry(hTblPtr, pattern) != NULL)
&& (Tcl_ListObjAppendElement(interp, resultPtr,
- Tcl_NewStringObj(pattern, TCL_INDEX_NONE)) != TCL_OK)) {
+ Tcl_NewStringObj(pattern, -1)) != TCL_OK)) {
goto error;
}
goto done;
@@ -10547,7 +10547,7 @@ Tcl_GetChannelNamesEx(
if (((pattern == NULL) || Tcl_StringMatch(name, pattern)) &&
(Tcl_ListObjAppendElement(interp, resultPtr,
- Tcl_NewStringObj(name, TCL_INDEX_NONE)) != TCL_OK)) {
+ Tcl_NewStringObj(name, -1)) != TCL_OK)) {
error:
TclDecrRefCount(resultPtr);
return TCL_ERROR;
diff --git a/generic/tclIOCmd.c b/generic/tclIOCmd.c
index cdb8083..8a0756f 100644
--- a/generic/tclIOCmd.c
+++ b/generic/tclIOCmd.c
@@ -107,7 +107,7 @@ Tcl_PutsObjCmd(
Tcl_Obj *string; /* String to write. */
Tcl_Obj *chanObjPtr = NULL; /* channel object. */
int newline; /* Add a newline at end? */
- size_t result; /* Result of puts operation. */
+ Tcl_Size result; /* Result of puts operation. */
int mode; /* Mode in which channel is opened. */
switch (objc) {
@@ -281,7 +281,7 @@ Tcl_GetsObjCmd(
Tcl_Obj *const objv[]) /* Argument objects. */
{
Tcl_Channel chan; /* The channel to read from. */
- size_t lineLen; /* Length of line just read. */
+ Tcl_Size lineLen; /* Length of line just read. */
int mode; /* Mode in which channel is opened. */
Tcl_Obj *linePtr, *chanObjPtr;
int code = TCL_OK;
@@ -369,7 +369,7 @@ Tcl_ReadObjCmd(
Tcl_Channel chan; /* The channel to read from. */
int newline, i; /* Discard newline at end? */
Tcl_WideInt toRead; /* How many bytes to read? */
- size_t charactersRead; /* How many characters were read? */
+ Tcl_Size charactersRead; /* How many characters were read? */
int mode; /* Mode in which channel is opened. */
Tcl_Obj *resultPtr, *chanObjPtr;
@@ -457,7 +457,7 @@ Tcl_ReadObjCmd(
if ((charactersRead > 0) && (newline != 0)) {
const char *result;
- size_t length;
+ Tcl_Size length;
result = Tcl_GetStringFromObj(resultPtr, &length);
if (result[length - 1] == '\n') {
@@ -1083,7 +1083,7 @@ Tcl_OpenObjCmd(
if (objc == 4) {
const char *permString = TclGetString(objv[3]);
int code = TCL_ERROR;
- int scanned = TclParseAllWhiteSpace(permString, TCL_INDEX_NONE);
+ int scanned = TclParseAllWhiteSpace(permString, -1);
/*
* Support legacy octal numbers.
@@ -1121,7 +1121,7 @@ Tcl_OpenObjCmd(
chan = Tcl_FSOpenFileChannel(interp, objv[1], modeString, prot);
} else {
int mode, seekFlag, binary;
- size_t cmdObjc;
+ Tcl_Size cmdObjc;
const char **cmdArgv;
if (Tcl_SplitList(interp, what+1, &cmdObjc, &cmdArgv) != TCL_OK) {
diff --git a/generic/tclIOGT.c b/generic/tclIOGT.c
index 532adbd..fe29b27 100644
--- a/generic/tclIOGT.c
+++ b/generic/tclIOGT.c
@@ -258,7 +258,7 @@ TclChannelTransform(
Channel *chanPtr; /* The actual channel. */
ChannelState *statePtr; /* State info for channel. */
int mode; /* Read/write mode of the channel. */
- size_t objc;
+ Tcl_Size objc;
TransformChannelData *dataPtr;
Tcl_DString ds;
@@ -268,7 +268,7 @@ TclChannelTransform(
if (TCL_OK != TclListObjLengthM(interp, cmdObjPtr, &objc)) {
Tcl_SetObjResult(interp,
- Tcl_NewStringObj("-command value is not a list", TCL_INDEX_NONE));
+ Tcl_NewStringObj("-command value is not a list", -1));
return TCL_ERROR;
}
@@ -397,7 +397,7 @@ ExecuteCallback(
}
Tcl_IncrRefCount(command);
- Tcl_ListObjAppendElement(NULL, command, Tcl_NewStringObj((char *) op, TCL_INDEX_NONE));
+ Tcl_ListObjAppendElement(NULL, command, Tcl_NewStringObj((char *) op, -1));
/*
* Use a byte-array to prevent the misinterpretation of binary data coming
diff --git a/generic/tclIORChan.c b/generic/tclIORChan.c
index 2f4f91d..de5fa58 100644
--- a/generic/tclIORChan.c
+++ b/generic/tclIORChan.c
@@ -266,13 +266,13 @@ typedef struct {
struct ForwardParamInput {
ForwardParamBase base; /* "Supertype". MUST COME FIRST. */
char *buf; /* O: Where to store the read bytes */
- size_t toRead; /* I: #bytes to read,
+ Tcl_Size toRead; /* I: #bytes to read,
* O: #bytes actually read */
};
struct ForwardParamOutput {
ForwardParamBase base; /* "Supertype". MUST COME FIRST. */
const char *buf; /* I: Where the bytes to write come from */
- int toWrite; /* I: #bytes to write,
+ Tcl_Size toWrite; /* I: #bytes to write,
* O: #bytes actually written */
};
struct ForwardParamSeek {
@@ -513,7 +513,7 @@ TclChanCreateObjCmd(
Tcl_Obj *cmdNameObj; /* Command name */
Tcl_Channel chan; /* Token for the new channel */
Tcl_Obj *modeObj; /* mode in obj form for method call */
- size_t listc; /* Result of 'initialize', and of */
+ Tcl_Size listc; /* Result of 'initialize', and of */
Tcl_Obj **listv; /* its sublist in the 2nd element */
int methIndex; /* Encoded method name */
int result; /* Result code for 'initialize' */
@@ -1052,10 +1052,10 @@ UnmarshallErrorResult(
Tcl_Interp *interp,
Tcl_Obj *msgObj)
{
- size_t lc;
+ Tcl_Size lc;
Tcl_Obj **lv;
int explicitResult;
- size_t numOptions;
+ Tcl_Size numOptions;
/*
* Process the caught message.
@@ -1331,7 +1331,7 @@ ReflectInput(
{
ReflectedChannel *rcPtr = (ReflectedChannel *)clientData;
Tcl_Obj *toReadObj;
- size_t bytec = 0; /* Number of returned bytes */
+ Tcl_Size bytec = 0; /* Number of returned bytes */
unsigned char *bytev; /* Array of returned bytes */
Tcl_Obj *resObj; /* Result data for 'read' */
@@ -1393,14 +1393,14 @@ ReflectInput(
if (bytev == NULL) {
SetChannelErrorStr(rcPtr->chan, msg_read_nonbyte);
goto invalid;
- } else if ((size_t)toRead < bytec) {
+ } else if (toRead < bytec) {
SetChannelErrorStr(rcPtr->chan, msg_read_toomuch);
goto invalid;
}
*errorCodePtr = EOK;
- if (bytec + 1 > 1) {
+ if (bytec > 0) {
memcpy(buf, bytev, bytec);
}
@@ -1917,7 +1917,7 @@ ReflectGetOption(
ReflectedChannel *rcPtr = (ReflectedChannel *)clientData;
Tcl_Obj *optionObj;
Tcl_Obj *resObj; /* Result data for 'configure' */
- size_t listc;
+ Tcl_Size listc;
int result = TCL_OK;
Tcl_Obj **listv;
MethodName method;
@@ -2011,11 +2011,11 @@ ReflectGetOption(
Tcl_ResetResult(interp);
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
"Expected list with even number of "
- "elements, got %" TCL_Z_MODIFIER "u element%s instead", listc,
+ "elements, got %" TCL_SIZE_MODIFIER "u element%s instead", listc,
(listc == 1 ? "" : "s")));
goto error;
} else {
- size_t len;
+ Tcl_Size len;
const char *str = Tcl_GetStringFromObj(resObj, &len);
if (len) {
@@ -2140,7 +2140,7 @@ EncodeEventMask(
int *mask)
{
int events; /* Mask of events to post */
- size_t listc; /* #elements in eventspec list */
+ Tcl_Size listc; /* #elements in eventspec list */
Tcl_Obj **listv; /* Elements of eventspec list */
int evIndex; /* Id of event for an element of the eventspec
* list. */
@@ -2451,7 +2451,7 @@ InvokeTclMethod(
*/
if (result != TCL_ERROR) {
- size_t cmdLen;
+ Tcl_Size cmdLen;
const char *cmdString = Tcl_GetStringFromObj(cmd, &cmdLen);
Tcl_IncrRefCount(cmd);
@@ -3124,7 +3124,7 @@ ForwardProc(
* Process a regular result.
*/
- size_t bytec = 0; /* Number of returned bytes */
+ Tcl_Size bytec = 0; /* Number of returned bytes */
unsigned char *bytev; /* Array of returned bytes */
bytev = Tcl_GetByteArrayFromObj(resObj, &bytec);
@@ -3136,7 +3136,7 @@ ForwardProc(
ForwardSetStaticError(paramPtr, msg_read_toomuch);
paramPtr->input.toRead = TCL_IO_FAILURE;
} else {
- if (bytec + 1 > 1) {
+ if (bytec > 0) {
memcpy(paramPtr->input.buf, bytev, bytec);
}
paramPtr->input.toRead = bytec;
@@ -3306,7 +3306,7 @@ ForwardProc(
* NOTE (4) as well.
*/
- size_t listc;
+ Tcl_Size listc;
Tcl_Obj **listv;
if (TclListObjGetElementsM(interp, resObj, &listc,
@@ -3321,12 +3321,12 @@ ForwardProc(
char *buf = (char *)Tcl_Alloc(200);
sprintf(buf,
- "{Expected list with even number of elements, got %" TCL_Z_MODIFIER "u %s instead}",
+ "{Expected list with even number of elements, got %" TCL_SIZE_MODIFIER "u %s instead}",
listc, (listc == 1 ? "element" : "elements"));
ForwardSetDynamicError(paramPtr, buf);
} else {
- size_t len;
+ Tcl_Size len;
const char *str = Tcl_GetStringFromObj(resObj, &len);
if (len) {
@@ -3438,7 +3438,7 @@ ForwardSetObjError(
ForwardParam *paramPtr,
Tcl_Obj *obj)
{
- size_t len;
+ Tcl_Size len;
const char *msgStr = Tcl_GetStringFromObj(obj, &len);
len++;
diff --git a/generic/tclIORTrans.c b/generic/tclIORTrans.c
index ebaa840..8b69e94 100644
--- a/generic/tclIORTrans.c
+++ b/generic/tclIORTrans.c
@@ -511,7 +511,7 @@ TclChanPushObjCmd(
Tcl_Obj *cmdNameObj; /* Command name */
Tcl_Obj *rtId; /* Handle of the new transform (channel) */
Tcl_Obj *modeObj; /* mode in obj form for method call */
- size_t listc; /* Result of 'initialize', and of */
+ Tcl_Size listc; /* Result of 'initialize', and of */
Tcl_Obj **listv; /* its sublist in the 2nd element */
int methIndex; /* Encoded method name */
int result; /* Result code for 'initialize' */
@@ -820,10 +820,10 @@ UnmarshallErrorResult(
Tcl_Interp *interp,
Tcl_Obj *msgObj)
{
- size_t lc;
+ Tcl_Size lc;
Tcl_Obj **lv;
int explicitResult;
- size_t numOptions;
+ Tcl_Size numOptions;
/*
* Process the caught message.
@@ -1719,7 +1719,7 @@ NewReflectedTransform(
Tcl_Channel parentChan)
{
ReflectedTransform *rtPtr;
- size_t i, listc;
+ Tcl_Size i, listc;
Tcl_Obj **listv;
rtPtr = (ReflectedTransform *)Tcl_Alloc(sizeof(ReflectedTransform));
diff --git a/generic/tclIOSock.c b/generic/tclIOSock.c
index a925c3d..c6cef55 100644
--- a/generic/tclIOSock.c
+++ b/generic/tclIOSock.c
@@ -117,13 +117,13 @@ TclSockGetPort(
int
TclSockMinimumBuffers(
void *sock, /* Socket file descriptor */
- size_t size1) /* Minimum buffer size */
+ Tcl_Size size1) /* Minimum buffer size */
{
int current;
socklen_t len;
int size = size1;
- if ((size_t)size != size1) {
+ if (size != size1) {
return TCL_ERROR;
}
len = sizeof(int);
diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c
index dc13a18..ce5c4f3 100644
--- a/generic/tclIOUtil.c
+++ b/generic/tclIOUtil.c
@@ -989,7 +989,7 @@ Tcl_FSMatchInDirectory(
{
const Tcl_Filesystem *fsPtr;
Tcl_Obj *cwd, *tmpResultPtr, **elemsPtr;
- size_t resLength, i;
+ Tcl_Size resLength, i;
int ret = -1;
if (types != NULL && (types->type & TCL_GLOB_TYPE_MOUNT)) {
@@ -1106,7 +1106,7 @@ FsAddMountsToGlobResult(
* directory flag is particularly significant.
*/
{
- size_t mLength, gLength, i;
+ Tcl_Size mLength, gLength, i;
int dir = (types == NULL || (types->type & TCL_GLOB_TYPE_DIR));
Tcl_Obj *mounts = FsListMounts(pathPtr, pattern);
@@ -1122,7 +1122,7 @@ FsAddMountsToGlobResult(
}
for (i=0 ; i<mLength ; i++) {
Tcl_Obj *mElt;
- size_t j;
+ Tcl_Size j;
int found = 0;
Tcl_ListObjIndex(NULL, mounts, i, &mElt);
@@ -1146,7 +1146,7 @@ FsAddMountsToGlobResult(
}
if (!found && dir) {
Tcl_Obj *norm;
- size_t len, mlen;
+ Tcl_Size len, mlen;
/*
* mElt is normalized and lies inside pathPtr so
@@ -1475,7 +1475,7 @@ TclGetOpenModeEx(
* operations after opening the file. */
{
int mode, c, gotRW;
- size_t modeArgc, i;
+ Tcl_Size modeArgc, i;
const char **modeArgv, *flag;
#define RW_MODES (O_RDONLY|O_WRONLY|O_RDWR)
@@ -2459,7 +2459,7 @@ TclFSFileAttrIndex(
* It's a constant attribute table, so use T_GIFO.
*/
- Tcl_Obj *tmpObj = Tcl_NewStringObj(attributeName, TCL_INDEX_NONE);
+ Tcl_Obj *tmpObj = Tcl_NewStringObj(attributeName, -1);
int result;
result = Tcl_GetIndexFromObj(NULL, tmpObj, attrTable, NULL, TCL_EXACT,
@@ -2474,7 +2474,7 @@ TclFSFileAttrIndex(
* It's a non-constant attribute list, so do a literal search.
*/
- size_t i, objc;
+ Tcl_Size i, objc;
Tcl_Obj **objv;
if (TclListObjGetElementsM(NULL, listObj, &objc, &objv) != TCL_OK) {
@@ -3292,7 +3292,7 @@ Tcl_LoadFile(
Tcl_DecrRefCount(copyToPtr);
if (interp) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "couldn't load from current filesystem", TCL_INDEX_NONE));
+ "couldn't load from current filesystem", -1));
}
return TCL_ERROR;
}
@@ -3876,13 +3876,13 @@ FsListMounts(
Tcl_Obj *
Tcl_FSSplitPath(
Tcl_Obj *pathPtr, /* The pathname to split. */
- size_t *lenPtr) /* A place to hold the number of pathname
+ Tcl_Size *lenPtr) /* A place to hold the number of pathname
* elements. */
{
Tcl_Obj *result = NULL; /* Just to squelch gcc warnings. */
const Tcl_Filesystem *fsPtr;
char separator = '/';
- size_t driveNameLength;
+ Tcl_Size driveNameLength;
const char *p;
/*
@@ -3928,7 +3928,7 @@ Tcl_FSSplitPath(
for (;;) {
const char *elementStart = p;
- size_t length;
+ Tcl_Size length;
while ((*p != '\0') && (*p != separator)) {
p++;
@@ -3973,14 +3973,14 @@ TclGetPathType(
/* If not NULL, a place in which to store a
* pointer to the filesystem for this pathname
* if it is absolute. */
- size_t *driveNameLengthPtr, /* If not NULL, a place in which to store the
+ Tcl_Size *driveNameLengthPtr, /* If not NULL, a place in which to store the
* length of the volume name. */
Tcl_Obj **driveNameRef) /* If not NULL, for an absolute pathname, a
* place to store a pointer to an object with a
* refCount of 1, and whose value is the name
* of the volume. */
{
- size_t pathLen;
+ Tcl_Size pathLen;
const char *path = Tcl_GetStringFromObj(pathPtr, &pathLen);
Tcl_PathType type;
@@ -4022,12 +4022,12 @@ TclGetPathType(
Tcl_PathType
TclFSNonnativePathType(
const char *path, /* Pathname to determine the type of. */
- size_t pathLen, /* Length of the pathname. */
+ Tcl_Size pathLen, /* Length of the pathname. */
const Tcl_Filesystem **filesystemPtrPtr,
/* If not NULL, a place to store a pointer to
* the filesystem for this pathname when it is
* an absolute pathname. */
- size_t *driveNameLengthPtr, /* If not NULL, a place to store the length of
+ Tcl_Size *driveNameLengthPtr,/* If not NULL, a place to store the length of
* the volume name if the pathname is absolute.
*/
Tcl_Obj **driveNameRef) /* If not NULL, a place to store a pointer to
@@ -4064,7 +4064,7 @@ TclFSNonnativePathType(
if ((fsRecPtr->fsPtr != &tclNativeFilesystem)
&& (fsRecPtr->fsPtr->listVolumesProc != NULL)) {
- size_t numVolumes;
+ Tcl_Size numVolumes;
Tcl_Obj *thisFsVolumes = fsRecPtr->fsPtr->listVolumesProc();
if (thisFsVolumes != NULL) {
@@ -4081,9 +4081,9 @@ TclFSNonnativePathType(
numVolumes = TCL_INDEX_NONE;
}
- while (numVolumes + 1 > 1) {
+ while (numVolumes > 0) {
Tcl_Obj *vol;
- size_t len;
+ Tcl_Size len;
const char *strVol;
numVolumes--;
@@ -4430,7 +4430,7 @@ Tcl_FSRemoveDirectory(
Tcl_Obj *cwdPtr = Tcl_FSGetCwd(NULL);
if (cwdPtr != NULL) {
const char *cwdStr, *normPathStr;
- size_t cwdLen, normLen;
+ Tcl_Size cwdLen, normLen;
Tcl_Obj *normPath = Tcl_FSGetNormalizedPath(NULL, pathPtr);
if (normPath != NULL) {
@@ -4612,7 +4612,7 @@ Tcl_FSFileSystemInfo(
resPtr = Tcl_NewListObj(0, NULL);
Tcl_ListObjAppendElement(NULL, resPtr,
- Tcl_NewStringObj(fsPtr->typeName, TCL_INDEX_NONE));
+ Tcl_NewStringObj(fsPtr->typeName, -1));
if (fsPtr->filesystemPathTypeProc != NULL) {
Tcl_Obj *typePtr = fsPtr->filesystemPathTypeProc(pathPtr);
diff --git a/generic/tclIndexObj.c b/generic/tclIndexObj.c
index 66d7f30..a8fec18 100644
--- a/generic/tclIndexObj.c
+++ b/generic/tclIndexObj.c
@@ -14,6 +14,7 @@
*/
#include "tclInt.h"
+#include <assert.h>
/*
* Prototypes for functions defined later in this file:
@@ -55,8 +56,8 @@ static const Tcl_ObjType indexType = {
typedef struct {
void *tablePtr; /* Pointer to the table of strings */
- size_t offset; /* Offset between table entries */
- size_t index; /* Selected index into table. */
+ Tcl_Size offset; /* Offset between table entries */
+ Tcl_Size index; /* Selected index into table. */
} IndexRep;
/*
@@ -107,7 +108,7 @@ GetIndexFromObjList(
int *indexPtr) /* Place to store resulting integer index. */
{
- size_t objc, t;
+ Tcl_Size objc, t;
int result;
Tcl_Obj **objv;
const char **tablePtr;
@@ -122,6 +123,9 @@ GetIndexFromObjList(
return result;
}
+ /* Return type is int* so caller should not be passing larger table */
+ assert(objc <= INT_MAX);
+
/*
* Build a string table from the list.
*/
@@ -134,7 +138,7 @@ GetIndexFromObjList(
*/
Tcl_Free((void *)tablePtr);
- *indexPtr = t;
+ *indexPtr = (int) t;
return TCL_OK;
}
@@ -187,13 +191,13 @@ Tcl_GetIndexFromObjStruct(
* offset, the third plus the offset again,
* etc. The last entry must be NULL and there
* must not be duplicate entries. */
- size_t offset, /* The number of bytes between entries */
+ Tcl_Size offset, /* The number of bytes between entries */
const char *msg, /* Identifying word to use in error
* messages. */
int flags, /* 0, TCL_EXACT, TCL_NULL_OK or TCL_INDEX_TEMP_TABLE */
void *indexPtr) /* Place to store resulting index. */
{
- size_t index, idx, numAbbrev;
+ Tcl_Size index, idx, numAbbrev;
const char *key, *p1;
const char *p2;
const char *const *entryPtr;
@@ -201,9 +205,8 @@ Tcl_GetIndexFromObjStruct(
IndexRep *indexRep;
const Tcl_ObjInternalRep *irPtr;
- /* Protect against invalid values, like TCL_INDEX_NONE or 0. */
- if (offset+1 <= sizeof(char *)) {
- offset = sizeof(char *);
+ if (offset < (Tcl_Size) sizeof(char *)) {
+ return TclIndexInvalidError(interp, "struct offset", offset);
}
/*
* See if there is a valid cached result from a previous lookup.
@@ -505,7 +508,7 @@ PrefixMatchObjCmd(
Tcl_Obj *const objv[]) /* Argument objects. */
{
int flags = 0, result, dummy, i;
- size_t dummyLength, errorLength;
+ Tcl_Size dummyLength, errorLength;
Tcl_Obj *errorPtr = NULL;
const char *message = "option";
Tcl_Obj *tablePtr, *objPtr, *resultPtr;
@@ -533,7 +536,7 @@ PrefixMatchObjCmd(
case PRFMATCH_MESSAGE:
if (i > objc-4) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "missing value for -message", TCL_INDEX_NONE));
+ "missing value for -message", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "NOARG", NULL);
return TCL_ERROR;
}
@@ -543,7 +546,7 @@ PrefixMatchObjCmd(
case PRFMATCH_ERROR:
if (i > objc-4) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "missing value for -error", TCL_INDEX_NONE));
+ "missing value for -error", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "NOARG", NULL);
return TCL_ERROR;
}
@@ -629,7 +632,7 @@ PrefixAllObjCmd(
Tcl_Obj *const objv[]) /* Argument objects. */
{
int result;
- size_t length, elemLength, tableObjc, t;
+ Tcl_Size length, elemLength, tableObjc, t;
const char *string, *elemString;
Tcl_Obj **tableObjv, *resultPtr;
@@ -687,7 +690,7 @@ PrefixLongestObjCmd(
Tcl_Obj *const objv[]) /* Argument objects. */
{
int result;
- size_t i, length, elemLength, resultLength, tableObjc, t;
+ Tcl_Size i, length, elemLength, resultLength, tableObjc, t;
const char *string, *elemString, *resultString;
Tcl_Obj **tableObjv;
@@ -802,7 +805,7 @@ PrefixLongestObjCmd(
void
Tcl_WrongNumArgs(
Tcl_Interp *interp, /* Current interpreter. */
- size_t objc, /* Number of arguments to print from objv. */
+ Tcl_Size objc, /* Number of arguments to print from objv. */
Tcl_Obj *const objv[], /* Initial argument objects, which should be
* included in the error message. */
const char *message) /* Error message to print after the leading
@@ -810,7 +813,8 @@ Tcl_WrongNumArgs(
* NULL. */
{
Tcl_Obj *objPtr;
- size_t i, len, elemLen;
+ Tcl_Size i;
+ size_t len, elemLen;
char flags;
Interp *iPtr = (Interp *)interp;
const char *elementStr;
@@ -819,9 +823,9 @@ Tcl_WrongNumArgs(
if (iPtr->flags & INTERP_ALTERNATE_WRONG_ARGS) {
iPtr->flags &= ~INTERP_ALTERNATE_WRONG_ARGS;
Tcl_AppendObjToObj(objPtr, Tcl_GetObjResult(interp));
- Tcl_AppendToObj(objPtr, " or \"", TCL_INDEX_NONE);
+ Tcl_AppendToObj(objPtr, " or \"", -1);
} else {
- Tcl_AppendToObj(objPtr, "wrong # args: should be \"", TCL_INDEX_NONE);
+ Tcl_AppendToObj(objPtr, "wrong # args: should be \"", -1);
}
/*
@@ -830,8 +834,8 @@ Tcl_WrongNumArgs(
*/
if (iPtr->ensembleRewrite.sourceObjs != NULL) {
- size_t toSkip = iPtr->ensembleRewrite.numInsertedObjs;
- size_t toPrint = iPtr->ensembleRewrite.numRemovedObjs;
+ Tcl_Size toSkip = iPtr->ensembleRewrite.numInsertedObjs;
+ Tcl_Size toPrint = iPtr->ensembleRewrite.numRemovedObjs;
Tcl_Obj *const *origObjv = TclEnsembleGetRewriteValues(interp);
/*
@@ -889,7 +893,7 @@ Tcl_WrongNumArgs(
* moderately complex condition here).
*/
- if (i+1<toPrint || objc!=0 || message!=NULL) {
+ if (i<toPrint-1 || objc!=0 || message!=NULL) {
Tcl_AppendStringsToObj(objPtr, " ", NULL);
}
}
@@ -987,7 +991,7 @@ Tcl_ParseArgsObjv(
Tcl_Interp *interp, /* Place to store error message. */
const Tcl_ArgvInfo *argTable,
/* Array of option descriptions. */
- size_t *objcPtr, /* Number of arguments in objv. Modified to
+ Tcl_Size *objcPtr, /* Number of arguments in objv. Modified to
* hold # args left in objv at end. */
Tcl_Obj *const *objv, /* Array of arguments to be parsed. */
Tcl_Obj ***remObjv) /* Pointer to array of arguments that were not
@@ -997,7 +1001,7 @@ Tcl_ParseArgsObjv(
Tcl_Obj **leftovers; /* Array to write back to remObjv on
* successful exit. Will include the name of
* the command. */
- size_t nrem; /* Size of leftovers.*/
+ Tcl_Size nrem; /* Size of leftovers.*/
const Tcl_ArgvInfo *infoPtr;
/* Pointer to the current entry in the table
* of argument descriptions. */
@@ -1009,13 +1013,13 @@ Tcl_ParseArgsObjv(
* quick check for matching; use 2nd char.
* because first char. will almost always be
* '-'). */
- size_t srcIndex; /* Location from which to read next argument
+ Tcl_Size srcIndex; /* Location from which to read next argument
* from objv. */
- size_t dstIndex; /* Used to keep track of current arguments
+ Tcl_Size dstIndex; /* Used to keep track of current arguments
* being processed, primarily for error
* reporting. */
- size_t objc; /* # arguments in objv still to process. */
- size_t length; /* Number of characters in current argument */
+ Tcl_Size objc; /* # arguments in objv still to process. */
+ Tcl_Size length; /* Number of characters in current argument */
if (remObjv != NULL) {
/*
@@ -1168,17 +1172,16 @@ Tcl_ParseArgsObjv(
break;
}
case TCL_ARGV_GENFUNC: {
- int i = (int)objc;
if (objc > INT_MAX) {
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "too many (%" TCL_Z_MODIFIER "u) arguments for TCL_ARGV_GENFUNC", objc));
+ "too many (%" TCL_SIZE_MODIFIER "d) arguments for TCL_ARGV_GENFUNC", objc));
goto error;
}
Tcl_ArgvGenFuncProc *handlerProc = (Tcl_ArgvGenFuncProc *)
infoPtr->srcPtr;
- i = handlerProc(infoPtr->clientData, interp, i,
+ int i = handlerProc(infoPtr->clientData, interp, (int) objc,
&objv[srcIndex], infoPtr->dstPtr);
if (i < 0) {
goto error;
@@ -1289,7 +1292,7 @@ PrintUsage(
* Now add the option information, with pretty-printing.
*/
- msg = Tcl_NewStringObj("Command-specific options:", TCL_INDEX_NONE);
+ msg = Tcl_NewStringObj("Command-specific options:", -1);
for (infoPtr = argTable; infoPtr->type != TCL_ARGV_END; infoPtr++) {
if ((infoPtr->type == TCL_ARGV_HELP) && (infoPtr->keyStr == NULL)) {
Tcl_AppendPrintfToObj(msg, "\n%s", infoPtr->helpStr);
@@ -1305,7 +1308,7 @@ PrintUsage(
}
numSpaces -= NUM_SPACES;
}
- Tcl_AppendToObj(msg, infoPtr->helpStr, TCL_INDEX_NONE);
+ Tcl_AppendToObj(msg, infoPtr->helpStr, -1);
switch (infoPtr->type) {
case TCL_ARGV_INT:
Tcl_AppendPrintfToObj(msg, "\n\t\tDefault value: %d",
diff --git a/generic/tclInt.decls b/generic/tclInt.decls
index 10cfbf6..78e87ac 100644
--- a/generic/tclInt.decls
+++ b/generic/tclInt.decls
@@ -349,8 +349,9 @@ declare 142 {
int TclSetByteCodeFromAny(Tcl_Interp *interp, Tcl_Obj *objPtr,
CompileHookProc *hookProc, void *clientData)
}
+# Do NOT change width of the size. TclEmitPush cannot handle it
declare 143 {
- Tcl_Size TclAddLiteralObj(struct CompileEnv *envPtr, Tcl_Obj *objPtr,
+ int TclAddLiteralObj(struct CompileEnv *envPtr, Tcl_Obj *objPtr,
LiteralEntry **litPtrPtr)
}
declare 144 {
@@ -663,8 +664,9 @@ declare 250 {
}
# Allow extensions for optimization
+# Do NOT change width of the size. TclEmitPush cannot handle it
declare 251 {
- Tcl_Size TclRegisterLiteral(void *envPtr,
+ int TclRegisterLiteral(void *envPtr,
const char *bytes, Tcl_Size length, int flags)
}
diff --git a/generic/tclInt.h b/generic/tclInt.h
index 50d992c..aae2685 100644
--- a/generic/tclInt.h
+++ b/generic/tclInt.h
@@ -108,7 +108,7 @@
* Maximum *signed* value that can be stored in a Tcl_Size type. This is
* primarily used for checking overflows in dynamically allocating memory.
*/
-#define TCL_SIZE_SMAX ((((Tcl_Size) 1) << ((8*sizeof(Tcl_Size)) - 1)) - 1)
+#define TCL_SIZE_SMAX ((((Tcl_Size) 1) << ((8*(Tcl_Size)sizeof(Tcl_Size)) - 1)) - 1)
/*
* Macros used to cast between pointers and integers (e.g. when storing an int
@@ -1094,7 +1094,7 @@ typedef struct ActiveInterpTrace {
typedef struct { /* For internal core use only */
Tcl_ObjType objType;
struct {
- size_t (*lengthProc)(Tcl_Obj *obj);
+ Tcl_Size (*lengthProc)(Tcl_Obj *obj);
} abstractList;
} TclObjTypeWithAbstractList;
#define TCL_OBJTYPE_V0_1(lengthProc) (sizeof(TclObjTypeWithAbstractList)) \
@@ -1103,7 +1103,7 @@ typedef struct { /* For internal core use only */
&& ((objPtr)->typePtr->version > offsetof(TclObjTypeWithAbstractList, abstractList.proc))) ? \
((const TclObjTypeWithAbstractList *)(objPtr)->typePtr)->abstractList.proc : NULL)
-MODULE_SCOPE size_t TclLengthOne(Tcl_Obj *);
+MODULE_SCOPE Tcl_Size TclLengthOne(Tcl_Obj *);
/*
* The structure below defines an entry in the assocData hash table which is
@@ -2500,11 +2500,10 @@ typedef struct ListStore {
/* Max number of elements that can be contained in a list */
#define LIST_MAX \
- ((ListSizeT_MAX - offsetof(ListStore, slots)) \
- / sizeof(Tcl_Obj *))
+ ((Tcl_Size)((ListSizeT_MAX - offsetof(ListStore, slots)) / sizeof(Tcl_Obj *)))
/* Memory size needed for a ListStore to hold numSlots_ elements */
#define LIST_SIZE(numSlots_) \
- (offsetof(ListStore, slots) + ((numSlots_) * sizeof(Tcl_Obj *)))
+ ((Tcl_Size)(offsetof(ListStore, slots) + ((numSlots_) * sizeof(Tcl_Obj *))))
/*
* ListSpan --
@@ -2513,7 +2512,7 @@ typedef struct ListStore {
typedef struct ListSpan {
Tcl_Size spanStart; /* Starting index of the span */
Tcl_Size spanLength; /* Number of elements in the span */
- size_t refCount; /* Count of references to this span record */
+ Tcl_Size refCount; /* Count of references to this span record */
} ListSpan;
#ifndef LIST_SPAN_THRESHOLD /* May be set on build line */
#define LIST_SPAN_THRESHOLD 101
@@ -2699,7 +2698,7 @@ typedef struct ListRep {
: Tcl_GetIntFromObj((interp), (objPtr), (intPtr)))
#define TclGetIntForIndexM(interp, objPtr, endValue, idxPtr) \
((((objPtr)->typePtr == &tclIntType.objType) && ((objPtr)->internalRep.wideValue >= 0) \
- && ((Tcl_WideUInt)(objPtr)->internalRep.wideValue <= (Tcl_WideUInt)(endValue + 1))) \
+ && ((objPtr)->internalRep.wideValue <= endValue)) \
? ((*(idxPtr) = (objPtr)->internalRep.wideValue), TCL_OK) \
: Tcl_GetIntForIndex((interp), (objPtr), (endValue), (idxPtr)))
@@ -3053,12 +3052,12 @@ struct Tcl_LoadHandle_ {
#if TCL_MAJOR_VERSION > 8
MODULE_SCOPE void TclAppendBytesToByteArray(Tcl_Obj *objPtr,
- const unsigned char *bytes, size_t len);
+ const unsigned char *bytes, Tcl_Size len);
MODULE_SCOPE int TclNREvalCmd(Tcl_Interp *interp, Tcl_Obj *objPtr,
int flags);
-MODULE_SCOPE void TclAdvanceContinuations(size_t *line, int **next,
+MODULE_SCOPE void TclAdvanceContinuations(Tcl_Size *line, int **next,
int loc);
-MODULE_SCOPE void TclAdvanceLines(size_t *line, const char *start,
+MODULE_SCOPE void TclAdvanceLines(Tcl_Size *line, const char *start,
const char *end);
MODULE_SCOPE void TclArgumentEnter(Tcl_Interp *interp,
Tcl_Obj *objv[], int objc, CmdFrame *cf);
@@ -3066,7 +3065,7 @@ MODULE_SCOPE void TclArgumentRelease(Tcl_Interp *interp,
Tcl_Obj *objv[], int objc);
MODULE_SCOPE void TclArgumentBCEnter(Tcl_Interp *interp,
Tcl_Obj *objv[], int objc,
- void *codePtr, CmdFrame *cfPtr, int cmd, size_t pc);
+ void *codePtr, CmdFrame *cfPtr, int cmd, Tcl_Size pc);
MODULE_SCOPE void TclArgumentBCRelease(Tcl_Interp *interp,
CmdFrame *cfPtr);
MODULE_SCOPE void TclArgumentGet(Tcl_Interp *interp, Tcl_Obj *obj,
@@ -3097,7 +3096,7 @@ MODULE_SCOPE void TclContinuationsEnterDerived(Tcl_Obj *objPtr,
MODULE_SCOPE ContLineLoc *TclContinuationsGet(Tcl_Obj *objPtr);
MODULE_SCOPE void TclContinuationsCopy(Tcl_Obj *objPtr,
Tcl_Obj *originObjPtr);
-MODULE_SCOPE size_t TclConvertElement(const char *src, size_t length,
+MODULE_SCOPE Tcl_Size TclConvertElement(const char *src, Tcl_Size length,
char *dst, int flags);
MODULE_SCOPE Tcl_Command TclCreateObjCommandInNs(Tcl_Interp *interp,
const char *cmdName, Tcl_Namespace *nsPtr,
@@ -3109,12 +3108,12 @@ MODULE_SCOPE Tcl_Command TclCreateEnsembleInNs(Tcl_Interp *interp,
MODULE_SCOPE void TclDeleteNamespaceVars(Namespace *nsPtr);
MODULE_SCOPE void TclDeleteNamespaceChildren(Namespace *nsPtr);
MODULE_SCOPE int TclFindDictElement(Tcl_Interp *interp,
- const char *dict, size_t dictLength,
+ const char *dict, Tcl_Size dictLength,
const char **elementPtr, const char **nextPtr,
- size_t *sizePtr, int *literalPtr);
+ Tcl_Size *sizePtr, int *literalPtr);
/* TIP #280 - Modified token based evaluation, with line information. */
MODULE_SCOPE int TclEvalEx(Tcl_Interp *interp, const char *script,
- size_t numBytes, int flags, size_t line,
+ Tcl_Size numBytes, int flags, Tcl_Size line,
int *clNextOuter, const char *outerScript);
MODULE_SCOPE Tcl_ObjCmdProc TclFileAttrsCmd;
MODULE_SCOPE Tcl_ObjCmdProc TclFileCopyCmd;
@@ -3136,7 +3135,7 @@ MODULE_SCOPE char * TclDStringAppendObj(Tcl_DString *dsPtr,
MODULE_SCOPE char * TclDStringAppendDString(Tcl_DString *dsPtr,
Tcl_DString *toAppendPtr);
MODULE_SCOPE Tcl_Obj *const *TclFetchEnsembleRoot(Tcl_Interp *interp,
- Tcl_Obj *const *objv, size_t objc, size_t *objcPtr);
+ Tcl_Obj *const *objv, Tcl_Size objc, Tcl_Size *objcPtr);
MODULE_SCOPE Tcl_Obj *const *TclEnsembleGetRewriteValues(Tcl_Interp *interp);
MODULE_SCOPE Tcl_Namespace *TclEnsureNamespace(Tcl_Interp *interp,
Tcl_Namespace *namespacePtr);
@@ -3190,7 +3189,7 @@ MODULE_SCOPE Tcl_Obj * TclGetProcessGlobalValue(ProcessGlobalValue *pgvPtr);
MODULE_SCOPE Tcl_Obj * TclGetSourceFromFrame(CmdFrame *cfPtr, int objc,
Tcl_Obj *const objv[]);
MODULE_SCOPE char * TclGetStringStorage(Tcl_Obj *objPtr,
- TCL_HASH_TYPE *sizePtr);
+ Tcl_Size *sizePtr);
MODULE_SCOPE int TclGetLoadedLibraries(Tcl_Interp *interp,
const char *targetName,
const char *packageName);
@@ -3233,25 +3232,25 @@ MODULE_SCOPE void TclLimitRemoveAllHandlers(Tcl_Interp *interp);
MODULE_SCOPE Tcl_Obj * TclLindexList(Tcl_Interp *interp,
Tcl_Obj *listPtr, Tcl_Obj *argPtr);
MODULE_SCOPE Tcl_Obj * TclLindexFlat(Tcl_Interp *interp, Tcl_Obj *listPtr,
- size_t indexCount, Tcl_Obj *const indexArray[]);
+ Tcl_Size indexCount, Tcl_Obj *const indexArray[]);
/* TIP #280 */
-MODULE_SCOPE void TclListLines(Tcl_Obj *listObj, size_t line, int n,
+MODULE_SCOPE void TclListLines(Tcl_Obj *listObj, Tcl_Size line, int n,
int *lines, Tcl_Obj *const *elems);
MODULE_SCOPE Tcl_Obj * TclListObjCopy(Tcl_Interp *interp, Tcl_Obj *listPtr);
MODULE_SCOPE int TclListObjAppendElements(Tcl_Interp *interp,
- Tcl_Obj *toObj, size_t elemCount,
+ Tcl_Obj *toObj, Tcl_Size elemCount,
Tcl_Obj *const elemObjv[]);
-MODULE_SCOPE Tcl_Obj * TclListObjRange(Tcl_Obj *listPtr, size_t fromIdx,
- size_t toIdx);
+MODULE_SCOPE Tcl_Obj * TclListObjRange(Tcl_Obj *listPtr, Tcl_Size fromIdx,
+ Tcl_Size toIdx);
MODULE_SCOPE Tcl_Obj * TclLsetList(Tcl_Interp *interp, Tcl_Obj *listPtr,
Tcl_Obj *indexPtr, Tcl_Obj *valuePtr);
MODULE_SCOPE Tcl_Obj * TclLsetFlat(Tcl_Interp *interp, Tcl_Obj *listPtr,
- size_t indexCount, Tcl_Obj *const indexArray[],
+ Tcl_Size indexCount, Tcl_Obj *const indexArray[],
Tcl_Obj *valuePtr);
MODULE_SCOPE Tcl_Command TclMakeEnsemble(Tcl_Interp *interp, const char *name,
const EnsembleImplMap map[]);
MODULE_SCOPE int TclMakeSafe(Tcl_Interp *interp);
-MODULE_SCOPE int TclMaxListLength(const char *bytes, size_t numBytes,
+MODULE_SCOPE Tcl_Size TclMaxListLength(const char *bytes, Tcl_Size numBytes,
const char **endPtr);
MODULE_SCOPE int TclMergeReturnOptions(Tcl_Interp *interp, int objc,
Tcl_Obj *const objv[], Tcl_Obj **optionsPtrPtr,
@@ -3269,15 +3268,15 @@ MODULE_SCOPE int TclObjInvokeNamespace(Tcl_Interp *interp,
MODULE_SCOPE int TclObjUnsetVar2(Tcl_Interp *interp,
Tcl_Obj *part1Ptr, Tcl_Obj *part2Ptr, int flags);
MODULE_SCOPE int TclParseBackslash(const char *src,
- size_t numBytes, size_t *readPtr, char *dst);
-MODULE_SCOPE int TclParseHex(const char *src, size_t numBytes,
+ Tcl_Size numBytes, Tcl_Size *readPtr, char *dst);
+MODULE_SCOPE int TclParseHex(const char *src, Tcl_Size numBytes,
int *resultPtr);
MODULE_SCOPE int TclParseNumber(Tcl_Interp *interp, Tcl_Obj *objPtr,
const char *expected, const char *bytes,
- size_t numBytes, const char **endPtrPtr, int flags);
+ Tcl_Size numBytes, const char **endPtrPtr, int flags);
MODULE_SCOPE void TclParseInit(Tcl_Interp *interp, const char *string,
- size_t numBytes, Tcl_Parse *parsePtr);
-MODULE_SCOPE size_t TclParseAllWhiteSpace(const char *src, size_t numBytes);
+ Tcl_Size numBytes, Tcl_Parse *parsePtr);
+MODULE_SCOPE Tcl_Size TclParseAllWhiteSpace(const char *src, Tcl_Size numBytes);
MODULE_SCOPE int TclProcessReturn(Tcl_Interp *interp,
int code, int level, Tcl_Obj *returnOpts);
MODULE_SCOPE int TclpObjLstat(Tcl_Obj *pathPtr, Tcl_StatBuf *buf);
@@ -3312,7 +3311,7 @@ MODULE_SCOPE int TclCreateSocketAddress(Tcl_Interp *interp,
MODULE_SCOPE int TclpThreadCreate(Tcl_ThreadId *idPtr,
Tcl_ThreadCreateProc *proc, void *clientData,
size_t stackSize, int flags);
-MODULE_SCOPE size_t TclpFindVariable(const char *name, size_t *lengthPtr);
+MODULE_SCOPE Tcl_Size TclpFindVariable(const char *name, Tcl_Size *lengthPtr);
MODULE_SCOPE void TclpInitLibraryPath(char **valuePtr,
TCL_HASH_TYPE *lengthPtr, Tcl_Encoding *encodingPtr);
MODULE_SCOPE void TclpInitLock(void);
@@ -3327,9 +3326,9 @@ MODULE_SCOPE int TclpMatchFiles(Tcl_Interp *interp, char *separators,
MODULE_SCOPE int TclpObjNormalizePath(Tcl_Interp *interp,
Tcl_Obj *pathPtr, int nextCheckpoint);
MODULE_SCOPE void TclpNativeJoinPath(Tcl_Obj *prefix, const char *joining);
-MODULE_SCOPE Tcl_Obj * TclpNativeSplitPath(Tcl_Obj *pathPtr, size_t *lenPtr);
+MODULE_SCOPE Tcl_Obj * TclpNativeSplitPath(Tcl_Obj *pathPtr, Tcl_Size *lenPtr);
MODULE_SCOPE Tcl_PathType TclpGetNativePathType(Tcl_Obj *pathPtr,
- size_t *driveNameLengthPtr, Tcl_Obj **driveNameRef);
+ Tcl_Size *driveNameLengthPtr, Tcl_Obj **driveNameRef);
MODULE_SCOPE int TclCrossFilesystemCopy(Tcl_Interp *interp,
Tcl_Obj *source, Tcl_Obj *target);
MODULE_SCOPE int TclpMatchInDirectory(Tcl_Interp *interp,
@@ -3362,7 +3361,7 @@ MODULE_SCOPE void TclRemoveScriptLimitCallbacks(Tcl_Interp *interp);
MODULE_SCOPE int TclReToGlob(Tcl_Interp *interp, const char *reStr,
size_t reStrLen, Tcl_DString *dsPtr, int *flagsPtr,
int *quantifiersFoundPtr);
-MODULE_SCOPE TCL_HASH_TYPE TclScanElement(const char *string, size_t length,
+MODULE_SCOPE TCL_HASH_TYPE TclScanElement(const char *string, Tcl_Size length,
char *flagPtr);
MODULE_SCOPE void TclSetBgErrorHandler(Tcl_Interp *interp,
Tcl_Obj *cmdPrefix);
@@ -3377,13 +3376,13 @@ MODULE_SCOPE void TclSetProcessGlobalValue(ProcessGlobalValue *pgvPtr,
Tcl_Obj *newValue, Tcl_Encoding encoding);
MODULE_SCOPE void TclSignalExitThread(Tcl_ThreadId id, int result);
MODULE_SCOPE void TclSpellFix(Tcl_Interp *interp,
- Tcl_Obj *const *objv, size_t objc, size_t subIdx,
+ Tcl_Obj *const *objv, Tcl_Size objc, Tcl_Size subIdx,
Tcl_Obj *bad, Tcl_Obj *fix);
MODULE_SCOPE void * TclStackRealloc(Tcl_Interp *interp, void *ptr,
size_t numBytes);
typedef int (*memCmpFn_t)(const void*, const void*, size_t);
MODULE_SCOPE int TclStringCmp(Tcl_Obj *value1Ptr, Tcl_Obj *value2Ptr,
- int checkEq, int nocase, size_t reqlength);
+ int checkEq, int nocase, Tcl_Size reqlength);
MODULE_SCOPE int TclStringCmpOpts(Tcl_Interp *interp, int objc,
Tcl_Obj *const objv[], int *nocase,
int *reqlength);
@@ -3392,29 +3391,29 @@ MODULE_SCOPE int TclStringMatch(const char *str, size_t strLen,
MODULE_SCOPE int TclStringMatchObj(Tcl_Obj *stringObj,
Tcl_Obj *patternObj, int flags);
MODULE_SCOPE void TclSubstCompile(Tcl_Interp *interp, const char *bytes,
- size_t numBytes, int flags, size_t line,
+ Tcl_Size numBytes, int flags, Tcl_Size line,
struct CompileEnv *envPtr);
-MODULE_SCOPE int TclSubstOptions(Tcl_Interp *interp, size_t numOpts,
+MODULE_SCOPE int TclSubstOptions(Tcl_Interp *interp, Tcl_Size numOpts,
Tcl_Obj *const opts[], int *flagPtr);
MODULE_SCOPE void TclSubstParse(Tcl_Interp *interp, const char *bytes,
- size_t numBytes, int flags, Tcl_Parse *parsePtr,
+ Tcl_Size numBytes, int flags, Tcl_Parse *parsePtr,
Tcl_InterpState *statePtr);
MODULE_SCOPE int TclSubstTokens(Tcl_Interp *interp, Tcl_Token *tokenPtr,
- size_t count, int *tokensLeftPtr, size_t line,
+ Tcl_Size count, int *tokensLeftPtr, Tcl_Size line,
int *clNextOuter, const char *outerScript);
-MODULE_SCOPE size_t TclTrim(const char *bytes, size_t numBytes,
- const char *trim, size_t numTrim, size_t *trimRight);
-MODULE_SCOPE size_t TclTrimLeft(const char *bytes, size_t numBytes,
- const char *trim, size_t numTrim);
-MODULE_SCOPE size_t TclTrimRight(const char *bytes, size_t numBytes,
- const char *trim, size_t numTrim);
+MODULE_SCOPE Tcl_Size TclTrim(const char *bytes, Tcl_Size numBytes,
+ const char *trim, Tcl_Size numTrim, Tcl_Size *trimRight);
+MODULE_SCOPE Tcl_Size TclTrimLeft(const char *bytes, Tcl_Size numBytes,
+ const char *trim, Tcl_Size numTrim);
+MODULE_SCOPE Tcl_Size TclTrimRight(const char *bytes, Tcl_Size numBytes,
+ const char *trim, Tcl_Size numTrim);
MODULE_SCOPE const char*TclGetCommandTypeName(Tcl_Command command);
MODULE_SCOPE void TclRegisterCommandTypeName(
Tcl_ObjCmdProc *implementationProc,
const char *nameStr);
MODULE_SCOPE int TclUtfCmp(const char *cs, const char *ct);
MODULE_SCOPE int TclUtfCasecmp(const char *cs, const char *ct);
-MODULE_SCOPE size_t TclUtfCount(int ch);
+MODULE_SCOPE int TclUtfCount(int ch);
#if TCL_UTF_MAX > 3
# define TclUtfToUCS4 Tcl_UtfToUniChar
# define TclUniCharToUCS4(src, ptr) (*ptr = *(src),1)
@@ -3461,7 +3460,7 @@ MODULE_SCOPE void TclpThreadDeleteKey(void *keyPtr);
MODULE_SCOPE void TclpThreadSetGlobalTSD(void *tsdKeyPtr, void *ptr);
MODULE_SCOPE void * TclpThreadGetGlobalTSD(void *tsdKeyPtr);
MODULE_SCOPE void TclErrorStackResetIf(Tcl_Interp *interp,
- const char *msg, size_t length);
+ const char *msg, Tcl_Size length);
/* Tip 430 */
MODULE_SCOPE int TclZipfs_Init(Tcl_Interp *interp);
@@ -3510,7 +3509,7 @@ MODULE_SCOPE int TclDictWithFinish(Tcl_Interp *interp, Var *varPtr,
Tcl_Obj *part2Ptr, int index, int pathc,
Tcl_Obj *const pathv[], Tcl_Obj *keysPtr);
MODULE_SCOPE Tcl_Obj * TclDictWithInit(Tcl_Interp *interp, Tcl_Obj *dictPtr,
- size_t pathc, Tcl_Obj *const pathv[]);
+ Tcl_Size pathc, Tcl_Obj *const pathv[]);
MODULE_SCOPE Tcl_ObjCmdProc Tcl_DisassembleObjCmd;
/* Assemble command function */
@@ -4036,13 +4035,13 @@ MODULE_SCOPE int TclCompileAssembleCmd(Tcl_Interp *interp,
MODULE_SCOPE Tcl_Obj * TclStringCat(Tcl_Interp *interp, int objc,
Tcl_Obj *const objv[], int flags);
MODULE_SCOPE Tcl_Obj * TclStringFirst(Tcl_Obj *needle, Tcl_Obj *haystack,
- size_t start);
+ Tcl_Size start);
MODULE_SCOPE Tcl_Obj * TclStringLast(Tcl_Obj *needle, Tcl_Obj *haystack,
- size_t last);
+ Tcl_Size last);
MODULE_SCOPE Tcl_Obj * TclStringRepeat(Tcl_Interp *interp, Tcl_Obj *objPtr,
- size_t count, int flags);
+ Tcl_Size count, int flags);
MODULE_SCOPE Tcl_Obj * TclStringReplace(Tcl_Interp *interp, Tcl_Obj *objPtr,
- size_t first, size_t count, Tcl_Obj *insertPtr,
+ Tcl_Size first, Tcl_Size count, Tcl_Obj *insertPtr,
int flags);
MODULE_SCOPE Tcl_Obj * TclStringReverse(Tcl_Obj *objPtr, int flags);
@@ -4169,8 +4168,10 @@ MODULE_SCOPE Tcl_Obj * TclGetArrayDefault(Var *arrayPtr);
*/
MODULE_SCOPE int TclIndexEncode(Tcl_Interp *interp, Tcl_Obj *objPtr,
- size_t before, size_t after, int *indexPtr);
-MODULE_SCOPE size_t TclIndexDecode(int encoded, size_t endValue);
+ int before, int after, int *indexPtr);
+MODULE_SCOPE Tcl_Size TclIndexDecode(int encoded, Tcl_Size endValue);
+MODULE_SCOPE int TclIndexInvalidError(Tcl_Interp *interp,
+ const char *idxType, Tcl_Size idx);
#endif /* TCL_MAJOR_VERSION > 8 */
/* Constants used in index value encoding routines. */
@@ -4178,6 +4179,36 @@ MODULE_SCOPE size_t TclIndexDecode(int encoded, size_t endValue);
#define TCL_INDEX_START ((Tcl_Size)0)
/*
+ *------------------------------------------------------------------------
+ *
+ * TclGetSizeFromObj --
+ *
+ * Extract a Tcl_Size from a Tcl_Obj
+ *
+ * Results:
+ * TCL_OK / TCL_ERROR
+ *
+ * Side effects:
+ * On success, the integer value is stored in *sizePtr. On error,
+ * an error message in interp it it is not NULL.
+ *
+ *------------------------------------------------------------------------
+ */
+static inline int TclGetSizeFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, Tcl_Size *sizePtr) {
+#if TCL_SIZE_MAX == INT_MAX
+ return TclGetIntFromObj(interp, objPtr, sizePtr);
+#else
+ Tcl_WideInt wide;
+ if (TclGetWideIntFromObj(interp, objPtr, &wide) != TCL_OK) {
+ return TCL_ERROR;
+ }
+ *sizePtr = (Tcl_Size)wide;
+ return TCL_OK;
+#endif
+}
+
+
+/*
*----------------------------------------------------------------------
*
* TclScaleTime --
@@ -4598,11 +4629,12 @@ MODULE_SCOPE const TclFileAttrProcs tclpFileAttrProcs[];
#define TCL_MIN_TOKEN_GROWTH TCL_MIN_GROWTH/sizeof(Tcl_Token)
#endif
+/* TODO - code below does not check for integer overflow */
#define TclGrowTokenArray(tokenPtr, used, available, append, staticPtr) \
do { \
- size_t _needed = (used) + (append); \
+ Tcl_Size _needed = (used) + (append); \
if (_needed > (available)) { \
- size_t allocated = 2 * _needed; \
+ Tcl_Size allocated = 2 * _needed; \
Tcl_Token *oldPtr = (tokenPtr); \
Tcl_Token *newPtr; \
if (oldPtr == (staticPtr)) { \
@@ -4660,16 +4692,17 @@ MODULE_SCOPE const TclFileAttrProcs tclpFileAttrProcs[];
* of counting along a string of all one-byte characters. The ANSI C
* "prototype" for this macro is:
*
- * MODULE_SCOPE void TclNumUtfCharsM(int numChars, const char *bytes,
- * int numBytes);
+ * MODULE_SCOPE void TclNumUtfCharsM(Tcl_Size numChars, const char *bytes,
+ * Tcl_Size numBytes);
+ * numBytes must be >= 0
*----------------------------------------------------------------
*/
#define TclNumUtfCharsM(numChars, bytes, numBytes) \
do { \
- size_t _count, _i = (numBytes); \
+ Tcl_Size _count = 0, _i = (numBytes); \
unsigned char *_str = (unsigned char *) (bytes); \
- while (_i && (*_str < 0xC0)) { _i--; _str++; } \
+ while (_i > 0 && (*_str < 0xC0)) { _i--; _str++; } \
_count = (numBytes) - _i; \
if (_i) { \
_count += Tcl_NumUtfChars((bytes) + _count, _i); \
@@ -4849,27 +4882,7 @@ MODULE_SCOPE Tcl_LibraryInitProc Procbodytest_SafeInit;
} while (0)
#define TclNewIndexObj(objPtr, uw) \
- do { \
- TclIncrObjsAllocated(); \
- TclAllocObjStorage(objPtr); \
- (objPtr)->refCount = 0; \
- (objPtr)->bytes = NULL; \
- Tcl_WideUInt uw_ = (uw); \
- if (uw_ >= TCL_INDEX_NONE) { \
- (objPtr)->internalRep.wideValue = -1; \
- (objPtr)->typePtr = &tclIntType.objType; \
- } else if (uw_ > WIDE_MAX) { \
- mp_int bignumValue_; \
- if (mp_init_u64(&bignumValue_, uw_) != MP_OKAY) { \
- Tcl_Panic("%s: memory overflow", "TclNewUIntObj"); \
- } \
- TclSetBignumInternalRep((objPtr), &bignumValue_); \
- } else { \
- (objPtr)->internalRep.wideValue = (Tcl_WideInt)(uw_); \
- (objPtr)->typePtr = &tclIntType.objType; \
- } \
- TCL_DTRACE_OBJ_CREATE(objPtr); \
- } while (0)
+ TclNewIntObj(objPtr, uw)
#define TclNewDoubleObj(objPtr, d) \
do { \
diff --git a/generic/tclIntDecls.h b/generic/tclIntDecls.h
index d6168b5..46479fb 100644
--- a/generic/tclIntDecls.h
+++ b/generic/tclIntDecls.h
@@ -309,7 +309,7 @@ EXTERN int TclSetByteCodeFromAny(Tcl_Interp *interp,
Tcl_Obj *objPtr, CompileHookProc *hookProc,
void *clientData);
/* 143 */
-EXTERN Tcl_Size TclAddLiteralObj(struct CompileEnv *envPtr,
+EXTERN int TclAddLiteralObj(struct CompileEnv *envPtr,
Tcl_Obj *objPtr, LiteralEntry **litPtrPtr);
/* 144 */
EXTERN void TclHideLiteral(Tcl_Interp *interp,
@@ -544,7 +544,7 @@ EXTERN char * TclDoubleDigits(double dv, int ndigits, int flags,
EXTERN void TclSetChildCancelFlags(Tcl_Interp *interp, int flags,
int force);
/* 251 */
-EXTERN Tcl_Size TclRegisterLiteral(void *envPtr, const char *bytes,
+EXTERN int TclRegisterLiteral(void *envPtr, const char *bytes,
Tcl_Size length, int flags);
/* 252 */
EXTERN Tcl_Obj * TclPtrGetVar(Tcl_Interp *interp, Tcl_Var varPtr,
@@ -731,7 +731,7 @@ typedef struct TclIntStubs {
void (*reserved140)(void);
const char * (*tclpGetCwd) (Tcl_Interp *interp, Tcl_DString *cwdPtr); /* 141 */
int (*tclSetByteCodeFromAny) (Tcl_Interp *interp, Tcl_Obj *objPtr, CompileHookProc *hookProc, void *clientData); /* 142 */
- Tcl_Size (*tclAddLiteralObj) (struct CompileEnv *envPtr, Tcl_Obj *objPtr, LiteralEntry **litPtrPtr); /* 143 */
+ int (*tclAddLiteralObj) (struct CompileEnv *envPtr, Tcl_Obj *objPtr, LiteralEntry **litPtrPtr); /* 143 */
void (*tclHideLiteral) (Tcl_Interp *interp, struct CompileEnv *envPtr, int index); /* 144 */
const struct AuxDataType * (*tclGetAuxDataType) (const char *typeName); /* 145 */
TclHandle (*tclHandleCreate) (void *ptr); /* 146 */
@@ -839,7 +839,7 @@ typedef struct TclIntStubs {
int (*tclCopyChannel) (Tcl_Interp *interp, Tcl_Channel inChan, Tcl_Channel outChan, long long toRead, Tcl_Obj *cmdPtr); /* 248 */
char * (*tclDoubleDigits) (double dv, int ndigits, int flags, int *decpt, int *signum, char **endPtr); /* 249 */
void (*tclSetChildCancelFlags) (Tcl_Interp *interp, int flags, int force); /* 250 */
- Tcl_Size (*tclRegisterLiteral) (void *envPtr, const char *bytes, Tcl_Size length, int flags); /* 251 */
+ int (*tclRegisterLiteral) (void *envPtr, const char *bytes, Tcl_Size length, int flags); /* 251 */
Tcl_Obj * (*tclPtrGetVar) (Tcl_Interp *interp, Tcl_Var varPtr, Tcl_Var arrayPtr, Tcl_Obj *part1Ptr, Tcl_Obj *part2Ptr, int flags); /* 252 */
Tcl_Obj * (*tclPtrSetVar) (Tcl_Interp *interp, Tcl_Var varPtr, Tcl_Var arrayPtr, Tcl_Obj *part1Ptr, Tcl_Obj *part2Ptr, Tcl_Obj *newValuePtr, int flags); /* 253 */
Tcl_Obj * (*tclPtrIncrObjVar) (Tcl_Interp *interp, Tcl_Var varPtr, Tcl_Var arrayPtr, Tcl_Obj *part1Ptr, Tcl_Obj *part2Ptr, Tcl_Obj *incrPtr, int flags); /* 254 */
diff --git a/generic/tclInterp.c b/generic/tclInterp.c
index 7c6c085..3aef953 100644
--- a/generic/tclInterp.c
+++ b/generic/tclInterp.c
@@ -837,7 +837,7 @@ NRInterpCmd(
break;
}
}
- childPtr = Tcl_NewStringObj(buf, TCL_INDEX_NONE);
+ childPtr = Tcl_NewStringObj(buf, -1);
}
if (ChildCreate(interp, childPtr, safe) == NULL) {
if (buf[0] != '\0') {
@@ -872,7 +872,7 @@ NRInterpCmd(
return TCL_ERROR;
} else if (childInterp == interp) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "cannot delete the current interpreter", TCL_INDEX_NONE));
+ "cannot delete the current interpreter", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "INTERP",
"DELETESELF", NULL);
return TCL_ERROR;
@@ -1053,7 +1053,7 @@ NRInterpCmd(
for ( ; hPtr != NULL; hPtr = Tcl_NextHashEntry(&hashSearch)) {
string = (char *)Tcl_GetHashKey(&iiPtr->parent.childTable, hPtr);
Tcl_ListObjAppendElement(NULL, resultPtr,
- Tcl_NewStringObj(string, TCL_INDEX_NONE));
+ Tcl_NewStringObj(string, -1));
}
Tcl_SetObjResult(interp, resultPtr);
return TCL_OK;
@@ -1197,24 +1197,24 @@ Tcl_CreateAlias(
const char *childCmd, /* Command to install in child. */
Tcl_Interp *targetInterp, /* Interpreter for target command. */
const char *targetCmd, /* Name of target command. */
- size_t argc, /* How many additional arguments? */
+ Tcl_Size argc, /* How many additional arguments? */
const char *const *argv) /* These are the additional args. */
{
Tcl_Obj *childObjPtr, *targetObjPtr;
Tcl_Obj **objv;
- size_t i;
+ Tcl_Size i;
int result;
objv = (Tcl_Obj **)TclStackAlloc(childInterp, sizeof(Tcl_Obj *) * argc);
for (i = 0; i < argc; i++) {
- objv[i] = Tcl_NewStringObj(argv[i], TCL_INDEX_NONE);
+ objv[i] = Tcl_NewStringObj(argv[i], -1);
Tcl_IncrRefCount(objv[i]);
}
- childObjPtr = Tcl_NewStringObj(childCmd, TCL_INDEX_NONE);
+ childObjPtr = Tcl_NewStringObj(childCmd, -1);
Tcl_IncrRefCount(childObjPtr);
- targetObjPtr = Tcl_NewStringObj(targetCmd, TCL_INDEX_NONE);
+ targetObjPtr = Tcl_NewStringObj(targetCmd, -1);
Tcl_IncrRefCount(targetObjPtr);
result = AliasCreate(childInterp, childInterp, targetInterp, childObjPtr,
@@ -1252,16 +1252,16 @@ Tcl_CreateAliasObj(
const char *childCmd, /* Command to install in child. */
Tcl_Interp *targetInterp, /* Interpreter for target command. */
const char *targetCmd, /* Name of target command. */
- size_t objc, /* How many additional arguments? */
+ Tcl_Size objc, /* How many additional arguments? */
Tcl_Obj *const objv[]) /* Argument vector. */
{
Tcl_Obj *childObjPtr, *targetObjPtr;
int result;
- childObjPtr = Tcl_NewStringObj(childCmd, TCL_INDEX_NONE);
+ childObjPtr = Tcl_NewStringObj(childCmd, -1);
Tcl_IncrRefCount(childObjPtr);
- targetObjPtr = Tcl_NewStringObj(targetCmd, TCL_INDEX_NONE);
+ targetObjPtr = Tcl_NewStringObj(targetCmd, -1);
Tcl_IncrRefCount(targetObjPtr);
result = AliasCreate(childInterp, childInterp, targetInterp, childObjPtr,
@@ -2116,7 +2116,7 @@ Tcl_CreateChild(
Tcl_Obj *pathPtr;
Tcl_Interp *childInterp;
- pathPtr = Tcl_NewStringObj(childPath, TCL_INDEX_NONE);
+ pathPtr = Tcl_NewStringObj(childPath, -1);
childInterp = ChildCreate(interp, pathPtr, isSafe);
Tcl_DecrRefCount(pathPtr);
@@ -2147,7 +2147,7 @@ Tcl_GetChild(
Tcl_Obj *pathPtr;
Tcl_Interp *childInterp;
- pathPtr = Tcl_NewStringObj(childPath, TCL_INDEX_NONE);
+ pathPtr = Tcl_NewStringObj(childPath, -1);
childInterp = GetInterp(interp, pathPtr);
Tcl_DecrRefCount(pathPtr);
@@ -2293,7 +2293,7 @@ Tcl_GetInterpPath(
}
Tcl_ListObjAppendElement(NULL, Tcl_GetObjResult(interp),
Tcl_NewStringObj((const char *)Tcl_GetHashKey(&iiPtr->parent.childTable,
- iiPtr->child.childEntryPtr), TCL_INDEX_NONE));
+ iiPtr->child.childEntryPtr), -1));
return TCL_OK;
}
@@ -2323,7 +2323,7 @@ GetInterp(
Tcl_HashEntry *hPtr; /* Search element. */
Child *childPtr; /* Interim child record. */
Tcl_Obj **objv;
- size_t objc, i;
+ Tcl_Size objc, i;
Tcl_Interp *searchInterp; /* Interim storage for interp. to find. */
InterpInfo *parentInfoPtr;
@@ -2381,12 +2381,12 @@ ChildBgerror(
Tcl_Obj *const objv[]) /* Argument strings. */
{
if (objc) {
- size_t length;
+ Tcl_Size length;
if (TCL_ERROR == TclListObjLengthM(NULL, objv[0], &length)
|| (length < 1)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "cmdPrefix must be list of length >= 1", TCL_INDEX_NONE));
+ "cmdPrefix must be list of length >= 1", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "INTERP",
"BGERRORFORMAT", NULL);
return TCL_ERROR;
@@ -2428,7 +2428,7 @@ ChildCreate(
Tcl_HashEntry *hPtr;
const char *path;
int isNew;
- size_t objc;
+ Tcl_Size objc;
Tcl_Obj **objv;
if (TclListObjGetElementsM(interp, pathPtr, &objc, &objv) != TCL_OK) {
@@ -2831,7 +2831,7 @@ ChildDebugCmd(
if (objc == 0) {
TclNewObj(resultPtr);
Tcl_ListObjAppendElement(NULL, resultPtr,
- Tcl_NewStringObj("-frame", TCL_INDEX_NONE));
+ Tcl_NewStringObj("-frame", -1));
Tcl_ListObjAppendElement(NULL, resultPtr,
Tcl_NewBooleanObj(iPtr->flags & INTERP_DEBUG_FRAME));
Tcl_SetObjResult(interp, resultPtr);
@@ -3001,7 +3001,7 @@ ChildRecursionLimit(
if (objc) {
if (Tcl_IsSafe(interp)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj("permission denied: "
- "safe interpreters cannot change recursion limit", TCL_INDEX_NONE));
+ "safe interpreters cannot change recursion limit", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "INTERP", "UNSAFE",
NULL);
return TCL_ERROR;
@@ -3009,18 +3009,18 @@ ChildRecursionLimit(
if (TclGetWideIntFromObj(interp, objv[0], &limit) == TCL_ERROR) {
return TCL_ERROR;
}
- if (limit <= 0 || (size_t)limit >= ((Tcl_WideUInt)WIDE_MAX & TCL_INDEX_NONE)) {
- Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "recursion limit must be > 0 and < %" TCL_LL_MODIFIER "u", (Tcl_WideUInt)WIDE_MAX & TCL_INDEX_NONE));
- Tcl_SetErrorCode(interp, "TCL", "OPERATION", "INTERP", "BADLIMIT",
- NULL);
+ if (limit <= 0) {
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(
+ "recursion limit must be > 0", -1));
+ Tcl_SetErrorCode(
+ interp, "TCL", "OPERATION", "INTERP", "BADLIMIT", NULL);
return TCL_ERROR;
}
Tcl_SetRecursionLimit(childInterp, limit);
iPtr = (Interp *) childInterp;
- if (interp == childInterp && iPtr->numLevels > (size_t)limit) {
+ if (interp == childInterp && iPtr->numLevels > limit) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "falling back due to new recursion limit", TCL_INDEX_NONE));
+ "falling back due to new recursion limit", -1));
Tcl_SetErrorCode(interp, "TCL", "RECURSION", NULL);
return TCL_ERROR;
}
@@ -3110,7 +3110,7 @@ ChildHidden(
hPtr != NULL;
hPtr = Tcl_NextHashEntry(&hSearch)) {
Tcl_ListObjAppendElement(NULL, listObjPtr,
- Tcl_NewStringObj((const char *)Tcl_GetHashKey(hTblPtr, hPtr), TCL_INDEX_NONE));
+ Tcl_NewStringObj((const char *)Tcl_GetHashKey(hTblPtr, hPtr), -1));
}
}
Tcl_SetObjResult(interp, listObjPtr);
@@ -3479,7 +3479,7 @@ Tcl_LimitCheck(
iPtr->limit.exceeded &= ~TCL_LIMIT_COMMANDS;
} else if (iPtr->limit.exceeded & TCL_LIMIT_COMMANDS) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "command count limit exceeded", TCL_INDEX_NONE));
+ "command count limit exceeded", -1));
Tcl_SetErrorCode(interp, "TCL", "LIMIT", "COMMANDS", NULL);
Tcl_Release(interp);
return TCL_ERROR;
@@ -3505,7 +3505,7 @@ Tcl_LimitCheck(
iPtr->limit.exceeded &= ~TCL_LIMIT_TIME;
} else if (iPtr->limit.exceeded & TCL_LIMIT_TIME) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "time limit exceeded", TCL_INDEX_NONE));
+ "time limit exceeded", -1));
Tcl_SetErrorCode(interp, "TCL", "LIMIT", "TIME", NULL);
Tcl_Release(interp);
return TCL_ERROR;
@@ -3985,7 +3985,7 @@ Tcl_LimitTypeReset(
void
Tcl_LimitSetCommands(
Tcl_Interp *interp,
- size_t commandLimit)
+ Tcl_Size commandLimit)
{
Interp *iPtr = (Interp *) interp;
@@ -4508,7 +4508,7 @@ ChildCommandLimitCmd(
if (interp == childInterp) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "limits on current interpreter inaccessible", TCL_INDEX_NONE));
+ "limits on current interpreter inaccessible", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "INTERP", "SELF", NULL);
return TCL_ERROR;
}
@@ -4523,7 +4523,7 @@ ChildCommandLimitCmd(
if (hPtr != NULL) {
limitCBPtr = (ScriptLimitCallback *)Tcl_GetHashValue(hPtr);
if (limitCBPtr != NULL && limitCBPtr->scriptObj != NULL) {
- Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[0], TCL_INDEX_NONE),
+ Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[0], -1),
limitCBPtr->scriptObj);
} else {
goto putEmptyCommandInDict;
@@ -4534,21 +4534,21 @@ ChildCommandLimitCmd(
putEmptyCommandInDict:
TclNewObj(empty);
Tcl_DictObjPut(NULL, dictPtr,
- Tcl_NewStringObj(options[0], TCL_INDEX_NONE), empty);
+ Tcl_NewStringObj(options[0], -1), empty);
}
- Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[1], TCL_INDEX_NONE),
+ Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[1], -1),
Tcl_NewWideIntObj(Tcl_LimitGetGranularity(childInterp,
TCL_LIMIT_COMMANDS)));
if (Tcl_LimitTypeEnabled(childInterp, TCL_LIMIT_COMMANDS)) {
- Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[2], TCL_INDEX_NONE),
+ Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[2], -1),
Tcl_NewWideIntObj(Tcl_LimitGetCommands(childInterp)));
} else {
Tcl_Obj *empty;
TclNewObj(empty);
Tcl_DictObjPut(NULL, dictPtr,
- Tcl_NewStringObj(options[2], TCL_INDEX_NONE), empty);
+ Tcl_NewStringObj(options[2], -1), empty);
}
Tcl_SetObjResult(interp, dictPtr);
return TCL_OK;
@@ -4586,7 +4586,7 @@ ChildCommandLimitCmd(
return TCL_ERROR;
} else {
int i;
- size_t scriptLen = 0, limitLen = 0;
+ Tcl_Size scriptLen = 0, limitLen = 0;
Tcl_Obj *scriptObj = NULL, *granObj = NULL, *limitObj = NULL;
int gran = 0, limit = 0;
@@ -4607,7 +4607,7 @@ ChildCommandLimitCmd(
}
if (gran < 1) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "granularity must be at least 1", TCL_INDEX_NONE));
+ "granularity must be at least 1", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "INTERP",
"BADVALUE", NULL);
return TCL_ERROR;
@@ -4624,7 +4624,7 @@ ChildCommandLimitCmd(
}
if (limit < 0) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "command limit value must be at least 0", TCL_INDEX_NONE));
+ "command limit value must be at least 0", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "INTERP",
"BADVALUE", NULL);
return TCL_ERROR;
@@ -4696,7 +4696,7 @@ ChildTimeLimitCmd(
if (interp == childInterp) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "limits on current interpreter inaccessible", TCL_INDEX_NONE));
+ "limits on current interpreter inaccessible", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "INTERP", "SELF", NULL);
return TCL_ERROR;
}
@@ -4711,7 +4711,7 @@ ChildTimeLimitCmd(
if (hPtr != NULL) {
limitCBPtr = (ScriptLimitCallback *)Tcl_GetHashValue(hPtr);
if (limitCBPtr != NULL && limitCBPtr->scriptObj != NULL) {
- Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[0], TCL_INDEX_NONE),
+ Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[0], -1),
limitCBPtr->scriptObj);
} else {
goto putEmptyCommandInDict;
@@ -4721,9 +4721,9 @@ ChildTimeLimitCmd(
putEmptyCommandInDict:
TclNewObj(empty);
Tcl_DictObjPut(NULL, dictPtr,
- Tcl_NewStringObj(options[0], TCL_INDEX_NONE), empty);
+ Tcl_NewStringObj(options[0], -1), empty);
}
- Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[1], TCL_INDEX_NONE),
+ Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[1], -1),
Tcl_NewWideIntObj(Tcl_LimitGetGranularity(childInterp,
TCL_LIMIT_TIME)));
@@ -4731,18 +4731,18 @@ ChildTimeLimitCmd(
Tcl_Time limitMoment;
Tcl_LimitGetTime(childInterp, &limitMoment);
- Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[2], TCL_INDEX_NONE),
+ Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[2], -1),
Tcl_NewWideIntObj(limitMoment.usec/1000));
- Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[3], TCL_INDEX_NONE),
+ Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[3], -1),
Tcl_NewWideIntObj(limitMoment.sec));
} else {
Tcl_Obj *empty;
TclNewObj(empty);
Tcl_DictObjPut(NULL, dictPtr,
- Tcl_NewStringObj(options[2], TCL_INDEX_NONE), empty);
+ Tcl_NewStringObj(options[2], -1), empty);
Tcl_DictObjPut(NULL, dictPtr,
- Tcl_NewStringObj(options[3], TCL_INDEX_NONE), empty);
+ Tcl_NewStringObj(options[3], -1), empty);
}
Tcl_SetObjResult(interp, dictPtr);
return TCL_OK;
@@ -4791,7 +4791,7 @@ ChildTimeLimitCmd(
return TCL_ERROR;
} else {
int i;
- size_t scriptLen = 0, milliLen = 0, secLen = 0;
+ Tcl_Size scriptLen = 0, milliLen = 0, secLen = 0;
Tcl_Obj *scriptObj = NULL, *granObj = NULL;
Tcl_Obj *milliObj = NULL, *secObj = NULL;
int gran = 0;
@@ -4816,7 +4816,7 @@ ChildTimeLimitCmd(
}
if (gran < 1) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "granularity must be at least 1", TCL_INDEX_NONE));
+ "granularity must be at least 1", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "INTERP",
"BADVALUE", NULL);
return TCL_ERROR;
@@ -4870,7 +4870,7 @@ ChildTimeLimitCmd(
if (secObj != NULL && secLen == 0 && milliLen > 0) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"may only set -milliseconds if -seconds is not "
- "also being reset", TCL_INDEX_NONE));
+ "also being reset", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "INTERP",
"BADUSAGE", NULL);
return TCL_ERROR;
@@ -4878,7 +4878,7 @@ ChildTimeLimitCmd(
if (milliLen == 0 && (secObj == NULL || secLen > 0)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"may only reset -milliseconds if -seconds is "
- "also being reset", TCL_INDEX_NONE));
+ "also being reset", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "INTERP",
"BADUSAGE", NULL);
return TCL_ERROR;
diff --git a/generic/tclLink.c b/generic/tclLink.c
index eec778a..b514d20 100644
--- a/generic/tclLink.c
+++ b/generic/tclLink.c
@@ -33,10 +33,10 @@ typedef struct {
* actual variable may be aliased at that time
* via upvar. */
void *addr; /* Location of C variable. */
- size_t bytes; /* Size of C variable array. This is 0 when
+ Tcl_Size bytes; /* Size of C variable array. This is 0 when
* single variables, and >0 used for array
* variables. */
- size_t numElems; /* Number of elements in C variable array.
+ Tcl_Size numElems; /* Number of elements in C variable array.
* Zero for single variables. */
int type; /* Type of link (TCL_LINK_INT, etc.). */
union {
@@ -175,7 +175,7 @@ Tcl_LinkVar(
linkPtr = (Link *)Tcl_Alloc(sizeof(Link));
linkPtr->interp = interp;
linkPtr->nsPtr = NULL;
- linkPtr->varName = Tcl_NewStringObj(varName, TCL_INDEX_NONE);
+ linkPtr->varName = Tcl_NewStringObj(varName, -1);
Tcl_IncrRefCount(linkPtr->varName);
linkPtr->addr = addr;
linkPtr->type = type & ~TCL_LINK_READ_ONLY;
@@ -246,7 +246,7 @@ Tcl_LinkArray(
* interpreter result. */
int type, /* Type of C variable: TCL_LINK_INT, etc. Also
* may have TCL_LINK_READ_ONLY OR'ed in. */
- size_t size) /* Size of C variable array, >1 if array */
+ Tcl_Size size) /* Size of C variable array, >1 if array */
{
Tcl_Obj *objPtr;
Link *linkPtr;
@@ -256,7 +256,7 @@ Tcl_LinkArray(
if (size < 1) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "wrong array size given", TCL_INDEX_NONE));
+ "wrong array size given", -1));
return TCL_ERROR;
}
@@ -340,7 +340,7 @@ Tcl_LinkArray(
default:
LinkFree(linkPtr);
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "bad linked array variable type", TCL_INDEX_NONE));
+ "bad linked array variable type", -1));
return TCL_ERROR;
}
@@ -380,7 +380,7 @@ Tcl_LinkArray(
*/
linkPtr->interp = interp;
- linkPtr->varName = Tcl_NewStringObj(varName, TCL_INDEX_NONE);
+ linkPtr->varName = Tcl_NewStringObj(varName, -1);
Tcl_IncrRefCount(linkPtr->varName);
TclGetNamespaceForQualName(interp, varName, NULL, TCL_GLOBAL_ONLY,
@@ -715,7 +715,7 @@ LinkTraceProc(
{
Link *linkPtr = (Link *)clientData;
int changed;
- size_t valueLength = 0;
+ Tcl_Size valueLength = 0;
const char *value;
char **pp;
Tcl_Obj *valueObj;
@@ -723,7 +723,7 @@ LinkTraceProc(
Tcl_WideInt valueWide;
Tcl_WideUInt valueUWide;
double valueDouble;
- size_t objc, i;
+ Tcl_Size objc, i;
Tcl_Obj **objv;
/*
@@ -1249,7 +1249,7 @@ ObjValue(
{
char *p;
Tcl_Obj *resultObj, **objv;
- size_t i;
+ Tcl_Size i;
switch (linkPtr->type) {
case TCL_LINK_INT:
@@ -1433,7 +1433,7 @@ ObjValue(
TclNewLiteralStringObj(resultObj, "NULL");
return resultObj;
}
- return Tcl_NewStringObj(p, TCL_INDEX_NONE);
+ return Tcl_NewStringObj(p, -1);
case TCL_LINK_CHARS:
if (linkPtr->flags & LINK_ALLOC_LAST) {
diff --git a/generic/tclListObj.c b/generic/tclListObj.c
index 30bddb2..ddae52e 100644
--- a/generic/tclListObj.c
+++ b/generic/tclListObj.c
@@ -50,13 +50,13 @@
#define LIST_INDEX_ASSERT(idxarg_) \
do { \
Tcl_Size idx_ = (idxarg_); /* To guard against ++ etc. */ \
- LIST_ASSERT(idx_ != TCL_INDEX_NONE && idx_ < LIST_MAX); \
+ LIST_ASSERT(idx_ >= 0 && idx_ < LIST_MAX); \
} while (0)
/* Ditto for counts except upper limit is different */
#define LIST_COUNT_ASSERT(countarg_) \
do { \
Tcl_Size count_ = (countarg_); /* To guard against ++ etc. */ \
- LIST_ASSERT(count_ != TCL_INDEX_NONE && count_ <= LIST_MAX); \
+ LIST_ASSERT(count_ >= 0 && count_ <= LIST_MAX); \
} while (0)
#else
@@ -143,7 +143,7 @@ static void DupListInternalRep(Tcl_Obj *srcPtr, Tcl_Obj *copyPtr);
static void FreeListInternalRep(Tcl_Obj *listPtr);
static int SetListFromAny(Tcl_Interp *interp, Tcl_Obj *objPtr);
static void UpdateStringOfList(Tcl_Obj *listPtr);
-static size_t ListLength(Tcl_Obj *listPtr);
+static Tcl_Size ListLength(Tcl_Obj *listPtr);
/*
* The structure below defines the list Tcl object type by means of functions
@@ -526,7 +526,7 @@ ListLimitExceededError(Tcl_Interp *interp)
if (interp != NULL) {
Tcl_SetObjResult(
interp,
- Tcl_NewStringObj("max length of a Tcl list exceeded", TCL_INDEX_NONE));
+ Tcl_NewStringObj("max length of a Tcl list exceeded", -1));
Tcl_SetErrorCode(interp, "TCL", "MEMORY", NULL);
}
return TCL_ERROR;
@@ -1436,13 +1436,13 @@ ListRepRange(
ListRepFreeUnreferenced(srcRepPtr);
} /* else T:listrep-2.{4.2,4.3,5.2,5.3,6.2,7.2,8.1} */
- if (rangeStart == TCL_INDEX_NONE) {
+ if (rangeStart < 0) {
rangeStart = 0;
}
- if ((rangeEnd != TCL_INDEX_NONE) && (rangeEnd >= numSrcElems)) {
+ if (rangeEnd >= numSrcElems) {
rangeEnd = numSrcElems - 1;
}
- if (rangeStart + 1 > rangeEnd + 1) {
+ if (rangeStart > rangeEnd) {
/* Empty list of capacity 1. */
ListRepInit(1, NULL, LISTREP_PANIC_ON_FAIL, rangeRepPtr);
return;
@@ -1764,7 +1764,7 @@ Tcl_ListObjAppendList(
if (TclListObjGetRep(interp, toObj, &listRep) != TCL_OK)
return TCL_ERROR; /* Cannot be converted to a list */
- if (elemCount == 0)
+ if (elemCount <= 0)
return TCL_OK; /* Nothing to do. Note AFTER check for list above */
ListRepElements(&listRep, toLen, toObjv);
@@ -1957,7 +1957,7 @@ Tcl_ListObjIndex(
!= TCL_OK) {
return TCL_ERROR;
}
- if (index >= numElems) {
+ if (index < 0 || index >= numElems) {
*objPtrPtr = NULL;
} else {
*objPtrPtr = elemObjs[index];
@@ -1997,7 +1997,7 @@ Tcl_ListObjLength(
{
ListRep listRep;
- size_t (*lengthProc)(Tcl_Obj *obj) = ABSTRACTLIST_PROC(listObj, lengthProc);
+ Tcl_Size (*lengthProc)(Tcl_Obj *obj) = ABSTRACTLIST_PROC(listObj, lengthProc);
if (lengthProc) {
*lenPtr = lengthProc(listObj);
return TCL_OK;
@@ -2017,11 +2017,11 @@ Tcl_ListObjLength(
return TCL_OK;
}
-size_t ListLength(
- Tcl_Obj *listPtr)
+Tcl_Size
+ListLength(Tcl_Obj *listPtr)
{
- ListRep listRep;
- ListObjGetRep(listPtr, &listRep);
+ ListRep listRep;
+ ListObjGetRep(listPtr, &listRep);
return ListRepLength(&listRep);
}
@@ -2094,13 +2094,13 @@ Tcl_ListObjReplace(
/* Make limits sane */
origListLen = ListRepLength(&listRep);
- if (first == TCL_INDEX_NONE) {
+ if (first < 0) {
first = 0;
}
if (first > origListLen) {
first = origListLen; /* So we'll insert after last element. */
}
- if (numToDelete == TCL_INDEX_NONE) {
+ if (numToDelete < 0) {
numToDelete = 0;
} else if (first > ListSizeT_MAX - numToDelete /* Handle integer overflow */
|| origListLen < first + numToDelete) {
@@ -2633,7 +2633,7 @@ Tcl_Obj *
TclLindexFlat(
Tcl_Interp *interp, /* Tcl interpreter. */
Tcl_Obj *listObj, /* Tcl object representing the list. */
- Tcl_Size indexCount, /* Count of indices. */
+ Tcl_Size indexCount, /* Count of indices. */
Tcl_Obj *const indexArray[])/* Array of pointers to Tcl objects that
* represent the indices in the list. */
{
@@ -2686,7 +2686,7 @@ TclLindexFlat(
if (TclGetIntForIndexM(interp, indexArray[i], /*endValue*/ listLen-1,
&index) == TCL_OK) {
- if (index >= listLen) {
+ if (index < 0 || index >= listLen) {
/*
* Index is out of range. Break out of loop with empty result.
* First check remaining indices for validity
@@ -2914,7 +2914,7 @@ TclLsetFlat(
}
indexArray++;
- if (index > elemCount
+ if (index < 0 || index > elemCount
|| (valueObj == NULL && index >= elemCount)) {
/* ...the index points outside the sublist. */
if (interp != NULL) {
diff --git a/generic/tclLiteral.c b/generic/tclLiteral.c
index c3f0f7d..4db6039 100644
--- a/generic/tclLiteral.c
+++ b/generic/tclLiteral.c
@@ -178,9 +178,9 @@ TclCreateLiteral(
Interp *iPtr,
const char *bytes, /* The start of the string. Note that this is
* not a NUL-terminated string. */
- size_t length, /* Number of bytes in the string. */
- size_t hash, /* The string's hash. If the value is
- * TCL_INDEX_NONE, it will be computed here. */
+ Tcl_Size length, /* Number of bytes in the string. */
+ TCL_HASH_TYPE hash, /* The string's hash. If the value is
+ * TCL_INDEX_NONE, it will be computed here. */
int *newPtr,
Namespace *nsPtr,
int flags,
@@ -195,7 +195,7 @@ TclCreateLiteral(
* Is it in the interpreter's global literal table?
*/
- if (hash == TCL_INDEX_NONE) {
+ if (hash == (TCL_HASH_TYPE) TCL_INDEX_NONE) {
hash = HashString(bytes, length);
}
globalHash = (hash & globalTablePtr->mask);
@@ -210,7 +210,7 @@ TclCreateLiteral(
* https://stackoverflow.com/q/54337750/301832
*/
- size_t objLength;
+ Tcl_Size objLength;
const char *objBytes = Tcl_GetStringFromObj(objPtr, &objLength);
if ((objLength == length) && ((length == 0)
@@ -351,7 +351,7 @@ Tcl_Obj *
TclFetchLiteral(
CompileEnv *envPtr, /* Points to the CompileEnv from which to
* fetch the registered literal value. */
- size_t index) /* Index of the desired literal, as returned
+ int index) /* Index of the desired literal, as returned
* by prior call to TclRegisterLiteral() */
{
if (index >= envPtr->literalArrayNext) {
@@ -387,14 +387,14 @@ TclFetchLiteral(
*----------------------------------------------------------------------
*/
-size_t
+int /* Do NOT change this type. Should not be wider than TclEmitPush operand*/
TclRegisterLiteral(
void *ePtr, /* Points to the CompileEnv in whose object
* array an object is found or created. */
const char *bytes, /* Points to string for which to find or
* create an object in CompileEnv's object
* array. */
- size_t length, /* Number of bytes in the string. If -1, the
+ Tcl_Size length, /* Number of bytes in the string. If -1, the
* string consists of all bytes up to the
* first null character. */
int flags) /* If LITERAL_ON_HEAP then the caller already
@@ -412,7 +412,7 @@ TclRegisterLiteral(
int isNew;
Namespace *nsPtr;
- if (length == TCL_INDEX_NONE) {
+ if (length < 0) {
length = (bytes ? strlen(bytes) : 0);
}
hash = HashString(bytes, length);
@@ -437,6 +437,9 @@ TclRegisterLiteral(
TclVerifyLocalLiteralTable(envPtr);
#endif /*TCL_COMPILE_DEBUG*/
+ if (objIndex > INT_MAX) {
+ Tcl_Panic("Literal table index too large. Cannot be handled by TclEmitPush");
+ }
return objIndex;
}
}
@@ -475,6 +478,10 @@ TclRegisterLiteral(
}
TclVerifyLocalLiteralTable(envPtr);
#endif /*TCL_COMPILE_DEBUG*/
+ if (objIndex > INT_MAX) {
+ Tcl_Panic(
+ "Literal table index too large. Cannot be handled by TclEmitPush");
+ }
return objIndex;
}
@@ -607,7 +614,7 @@ TclHideLiteral(
*----------------------------------------------------------------------
*/
-size_t
+int
TclAddLiteralObj(
CompileEnv *envPtr,/* Points to CompileEnv in whose literal array
* the object is to be inserted. */
@@ -624,6 +631,10 @@ TclAddLiteralObj(
}
objIndex = envPtr->literalArrayNext;
envPtr->literalArrayNext++;
+ if (objIndex > INT_MAX) {
+ Tcl_Panic(
+ "Literal table index too large. Cannot be handled by TclEmitPush");
+ }
lPtr = &envPtr->literalArrayPtr[objIndex];
lPtr->objPtr = objPtr;
@@ -634,7 +645,7 @@ TclAddLiteralObj(
if (litPtrPtr) {
*litPtrPtr = lPtr;
}
-
+
return objIndex;
}
diff --git a/generic/tclLoad.c b/generic/tclLoad.c
index b66122d..0e59c7b 100644
--- a/generic/tclLoad.c
+++ b/generic/tclLoad.c
@@ -192,7 +192,7 @@ Tcl_LoadObjCmd(
}
if ((fullFileName[0] == 0) && (prefix == NULL)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "must specify either file name or prefix", TCL_INDEX_NONE));
+ "must specify either file name or prefix", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "LOAD", "NOLIBRARY",
NULL);
code = TCL_ERROR;
@@ -232,9 +232,9 @@ Tcl_LoadObjCmd(
namesMatch = 0;
} else {
TclDStringClear(&pfx);
- Tcl_DStringAppend(&pfx, prefix, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&pfx, prefix, -1);
TclDStringClear(&tmp);
- Tcl_DStringAppend(&tmp, libraryPtr->prefix, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&tmp, libraryPtr->prefix, -1);
if (strcmp(Tcl_DStringValue(&tmp),
Tcl_DStringValue(&pfx)) == 0) {
namesMatch = 1;
@@ -307,10 +307,10 @@ Tcl_LoadObjCmd(
*/
if (prefix != NULL) {
- Tcl_DStringAppend(&pfx, prefix, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&pfx, prefix, -1);
} else {
Tcl_Obj *splitPtr, *pkgGuessPtr;
- size_t pElements;
+ Tcl_Size pElements;
const char *pkgGuess;
/*
@@ -487,7 +487,7 @@ Tcl_LoadObjCmd(
* this interp are incompatible in their stubs mechanisms, and
* recorded the error in the oldest legacy place we have to do so.
*/
- Tcl_SetObjResult(target, Tcl_NewStringObj(iPtr->legacyResult, TCL_INDEX_NONE));
+ Tcl_SetObjResult(target, Tcl_NewStringObj(iPtr->legacyResult, -1));
iPtr->legacyResult = NULL;
iPtr->legacyFreeProc = (void (*) (void))-1;
}
@@ -625,7 +625,7 @@ Tcl_UnloadObjCmd(
}
if ((fullFileName[0] == 0) && (prefix == NULL)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "must specify either file name or prefix", TCL_INDEX_NONE));
+ "must specify either file name or prefix", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "UNLOAD", "NOLIBRARY",
NULL);
code = TCL_ERROR;
@@ -665,9 +665,9 @@ Tcl_UnloadObjCmd(
namesMatch = 0;
} else {
TclDStringClear(&pfx);
- Tcl_DStringAppend(&pfx, prefix, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&pfx, prefix, -1);
TclDStringClear(&tmp);
- Tcl_DStringAppend(&tmp, libraryPtr->prefix, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&tmp, libraryPtr->prefix, -1);
if (strcmp(Tcl_DStringValue(&tmp),
Tcl_DStringValue(&pfx)) == 0) {
namesMatch = 1;
@@ -1121,8 +1121,8 @@ TclGetLoadedLibraries(
Tcl_MutexLock(&libraryMutex);
for (libraryPtr = firstLibraryPtr; libraryPtr != NULL;
libraryPtr = libraryPtr->nextPtr) {
- pkgDesc[0] = Tcl_NewStringObj(libraryPtr->fileName, TCL_INDEX_NONE);
- pkgDesc[1] = Tcl_NewStringObj(libraryPtr->prefix, TCL_INDEX_NONE);
+ pkgDesc[0] = Tcl_NewStringObj(libraryPtr->fileName, -1);
+ pkgDesc[1] = Tcl_NewStringObj(libraryPtr->prefix, -1);
Tcl_ListObjAppendElement(NULL, resultObj,
Tcl_NewListObj(2, pkgDesc));
}
@@ -1147,7 +1147,7 @@ TclGetLoadedLibraries(
libraryPtr = ipPtr->libraryPtr;
if (!strcmp(prefix, libraryPtr->prefix)) {
- resultObj = Tcl_NewStringObj(libraryPtr->fileName, TCL_INDEX_NONE);
+ resultObj = Tcl_NewStringObj(libraryPtr->fileName, -1);
break;
}
}
@@ -1166,8 +1166,8 @@ TclGetLoadedLibraries(
TclNewObj(resultObj);
for (; ipPtr != NULL; ipPtr = ipPtr->nextPtr) {
libraryPtr = ipPtr->libraryPtr;
- pkgDesc[0] = Tcl_NewStringObj(libraryPtr->fileName, TCL_INDEX_NONE);
- pkgDesc[1] = Tcl_NewStringObj(libraryPtr->prefix, TCL_INDEX_NONE);
+ pkgDesc[0] = Tcl_NewStringObj(libraryPtr->fileName, -1);
+ pkgDesc[1] = Tcl_NewStringObj(libraryPtr->prefix, -1);
Tcl_ListObjAppendElement(NULL, resultObj, Tcl_NewListObj(2, pkgDesc));
}
Tcl_SetObjResult(interp, resultObj);
diff --git a/generic/tclLoadNone.c b/generic/tclLoadNone.c
index abf6eda..f60f843 100644
--- a/generic/tclLoadNone.c
+++ b/generic/tclLoadNone.c
@@ -81,7 +81,7 @@ TclpLoadMemory(
{
if (interp) {
Tcl_SetObjResult(interp, Tcl_NewStringObj("dynamic loading from memory "
- "is not available on this system", TCL_INDEX_NONE));
+ "is not available on this system", -1));
}
return TCL_ERROR;
}
diff --git a/generic/tclMain.c b/generic/tclMain.c
index bb77e28..2833ca8 100644
--- a/generic/tclMain.c
+++ b/generic/tclMain.c
@@ -280,7 +280,7 @@ Tcl_SourceRCFile(
TCL_NORETURN void
Tcl_MainEx(
- size_t argc, /* Number of arguments. */
+ Tcl_Size argc, /* Number of arguments. */
TCHAR **argv, /* Array of argument strings. */
Tcl_AppInitProc *appInitProc,
/* Application-specific initialization
@@ -288,7 +288,7 @@ Tcl_MainEx(
* but before starting to execute commands. */
Tcl_Interp *interp)
{
- size_t i=0; /* argv[i] index */
+ Tcl_Size i=0; /* argv[i] index */
Tcl_Obj *path, *resultPtr, *argvPtr, *appName;
const char *encodingName = NULL;
int code, exitCode = 0;
@@ -297,7 +297,7 @@ Tcl_MainEx(
InteractiveState is;
TclpSetInitialEncodings();
- if (argc + 1 > 1) {
+ if (argc > 0) {
--argc; /* consume argv[0] */
++i;
}
@@ -326,7 +326,7 @@ Tcl_MainEx(
*/
/* mind argc is being adjusted as we proceed */
- if ((argc >= 3) && argv[1] && argv[2] && argv[3] && (0 == _tcscmp(TEXT("-encoding"), argv[1]))
+ if ((argc >= 3) && (0 == _tcscmp(TEXT("-encoding"), argv[1]))
&& ('-' != argv[3][0])) {
Tcl_Obj *value = NewNativeObj(argv[2]);
Tcl_SetStartupScript(NewNativeObj(argv[3]),
@@ -334,7 +334,7 @@ Tcl_MainEx(
Tcl_DecrRefCount(value);
argc -= 3;
i += 3;
- } else if ((argc >= 1) && argv[1] && ('-' != argv[1][0])) {
+ } else if ((argc >= 1) && ('-' != argv[1][0])) {
Tcl_SetStartupScript(NewNativeObj(argv[1]), NULL);
argc--;
i++;
@@ -354,7 +354,7 @@ Tcl_MainEx(
Tcl_SetVar2Ex(interp, "argc", NULL, Tcl_NewWideIntObj(argc), TCL_GLOBAL_ONLY);
argvPtr = Tcl_NewListObj(0, NULL);
- while (argc-- && argv[i]) {
+ while (argc--) {
Tcl_ListObjAppendElement(NULL, argvPtr, NewNativeObj(argv[i++]));
}
Tcl_SetVar2Ex(interp, "argv", NULL, argvPtr, TCL_GLOBAL_ONLY);
@@ -454,7 +454,7 @@ Tcl_MainEx(
while ((is.input != NULL) && !Tcl_InterpDeleted(interp)) {
mainLoopProc = TclGetMainLoop();
if (mainLoopProc == NULL) {
- size_t length;
+ Tcl_Size length;
if (is.tty) {
Prompt(interp, &is);
@@ -475,7 +475,7 @@ Tcl_MainEx(
Tcl_IncrRefCount(is.commandPtr);
}
length = Tcl_GetsObj(is.input, is.commandPtr);
- if (length == TCL_INDEX_NONE) {
+ if (length < 0) {
if (Tcl_InputBlocked(is.input)) {
/*
* This can only happen if stdin has been set to
@@ -740,7 +740,7 @@ StdinProc(
TCL_UNUSED(int) /*mask*/)
{
int code;
- size_t length;
+ Tcl_Size length;
InteractiveState *isPtr = (InteractiveState *)clientData;
Tcl_Channel chan = isPtr->input;
Tcl_Obj *commandPtr = isPtr->commandPtr;
@@ -752,7 +752,7 @@ StdinProc(
Tcl_IncrRefCount(commandPtr);
}
length = Tcl_GetsObj(chan, commandPtr);
- if (length == TCL_INDEX_NONE) {
+ if (length < 0) {
if (Tcl_InputBlocked(chan)) {
return;
}
diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c
index 924ffd5..99feac4 100644
--- a/generic/tclNamesp.c
+++ b/generic/tclNamesp.c
@@ -410,7 +410,7 @@ Tcl_PopCallFrame(
*/
nsPtr = framePtr->nsPtr;
- if ((--nsPtr->activationCount <= (unsigned)(nsPtr == iPtr->globalNsPtr))
+ if ((--nsPtr->activationCount <= (nsPtr == iPtr->globalNsPtr))
&& (nsPtr->flags & NS_DYING)) {
Tcl_DeleteNamespace((Tcl_Namespace *) nsPtr);
}
@@ -698,7 +698,7 @@ Tcl_CreateNamespace(
if (deleteProc != NULL) {
nameStr = name + strlen(name) - 2;
if (nameStr >= name && nameStr[1] == ':' && nameStr[0] == ':') {
- Tcl_DStringAppend(&tmpBuffer, name, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&tmpBuffer, name, -1);
while ((nameLen = Tcl_DStringLength(&tmpBuffer)) > 0
&& Tcl_DStringValue(&tmpBuffer)[nameLen-1] == ':') {
Tcl_DStringSetLength(&tmpBuffer, nameLen-1);
@@ -715,7 +715,7 @@ Tcl_CreateNamespace(
if (*name == '\0') {
Tcl_SetObjResult(interp, Tcl_NewStringObj("can't create namespace"
- " \"\": only global namespace can have empty name", TCL_INDEX_NONE));
+ " \"\": only global namespace can have empty name", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "NAMESPACE",
"CREATEGLOBAL", NULL);
Tcl_DStringFree(&tmpBuffer);
@@ -833,7 +833,7 @@ Tcl_CreateNamespace(
Tcl_DString *tempPtr = namePtr;
TclDStringAppendLiteral(buffPtr, "::");
- Tcl_DStringAppend(buffPtr, ancestorPtr->name, TCL_INDEX_NONE);
+ Tcl_DStringAppend(buffPtr, ancestorPtr->name, -1);
TclDStringAppendDString(buffPtr, namePtr);
/*
@@ -1006,7 +1006,7 @@ Tcl_DeleteNamespace(
* FreeNsNameInternalRep when its refCount reaches 0.
*/
- if (nsPtr->activationCount > (unsigned)(nsPtr == globalNsPtr)) {
+ if (nsPtr->activationCount > (nsPtr == globalNsPtr)) {
nsPtr->flags |= NS_DYING;
if (nsPtr->parentPtr != NULL) {
entryPtr = Tcl_FindHashEntry(
@@ -1185,7 +1185,7 @@ TclTeardownNamespace(
Interp *iPtr = (Interp *) nsPtr->interp;
Tcl_HashEntry *entryPtr;
Tcl_HashSearch search;
- size_t i;
+ Tcl_Size i;
/*
* Start by destroying the namespace's variable table, since variables
@@ -1206,7 +1206,7 @@ TclTeardownNamespace(
*/
while (nsPtr->cmdTable.numEntries > 0) {
- size_t length = nsPtr->cmdTable.numEntries;
+ Tcl_Size length = nsPtr->cmdTable.numEntries;
Command **cmds = (Command **)TclStackAlloc((Tcl_Interp *) iPtr,
sizeof(Command *) * length);
@@ -1396,7 +1396,7 @@ Tcl_Export(
Namespace *currNsPtr = (Namespace *) TclGetCurrentNamespace(interp);
const char *simplePattern;
char *patternCpy;
- size_t neededElems, len, i;
+ Tcl_Size neededElems, len, i;
/*
* If the specified namespace is NULL, use the current namespace.
@@ -1523,7 +1523,7 @@ Tcl_AppendExportList(
* export pattern list is appended. */
{
Namespace *nsPtr;
- size_t i;
+ Tcl_Size i;
int result;
/*
@@ -1542,7 +1542,7 @@ Tcl_AppendExportList(
for (i = 0; i < nsPtr->numExportPatterns; i++) {
result = Tcl_ListObjAppendElement(interp, objPtr,
- Tcl_NewStringObj(nsPtr->exportArrayPtr[i], TCL_INDEX_NONE));
+ Tcl_NewStringObj(nsPtr->exportArrayPtr[i], -1));
if (result != TCL_OK) {
return result;
}
@@ -1621,7 +1621,7 @@ Tcl_Import(
int result;
TclNewLiteralStringObj(objv[0], "auto_import");
- objv[1] = Tcl_NewStringObj(pattern, TCL_INDEX_NONE);
+ objv[1] = Tcl_NewStringObj(pattern, -1);
Tcl_IncrRefCount(objv[0]);
Tcl_IncrRefCount(objv[1]);
@@ -1726,7 +1726,7 @@ DoImport(
Namespace *importNsPtr,
int allowOverwrite)
{
- size_t i = 0, exported = 0;
+ Tcl_Size i = 0, exported = 0;
Tcl_HashEntry *found;
/*
@@ -1762,11 +1762,11 @@ DoImport(
ImportRef *refPtr;
Tcl_DStringInit(&ds);
- Tcl_DStringAppend(&ds, nsPtr->fullName, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&ds, nsPtr->fullName, -1);
if (nsPtr != ((Interp *) interp)->globalNsPtr) {
TclDStringAppendLiteral(&ds, "::");
}
- Tcl_DStringAppend(&ds, cmdName, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&ds, cmdName, -1);
/*
* Check whether creating the new imported command in the current
@@ -2638,7 +2638,7 @@ Tcl_FindCommand(
cmdPtr = NULL;
if (cxtNsPtr->commandPathLength!=0 && strncmp(name, "::", 2)
&& !(flags & TCL_NAMESPACE_ONLY)) {
- size_t i;
+ Tcl_Size i;
Namespace *pathNsPtr, *realNsPtr, *dummyNsPtr;
(void) TclGetNamespaceForQualName(interp, name, cxtNsPtr,
@@ -3049,11 +3049,11 @@ NamespaceChildrenCmd(
if ((*name == ':') && (*(name+1) == ':')) {
pattern = name;
} else {
- Tcl_DStringAppend(&buffer, nsPtr->fullName, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&buffer, nsPtr->fullName, -1);
if (nsPtr != globalNsPtr) {
TclDStringAppendLiteral(&buffer, "::");
}
- Tcl_DStringAppend(&buffer, name, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&buffer, name, -1);
pattern = Tcl_DStringValue(&buffer);
}
}
@@ -3079,7 +3079,7 @@ NamespaceChildrenCmd(
#endif
) {
Tcl_ListObjAppendElement(interp, listPtr,
- Tcl_NewStringObj(pattern, TCL_INDEX_NONE));
+ Tcl_NewStringObj(pattern, -1));
}
goto searchDone;
}
@@ -3095,7 +3095,7 @@ NamespaceChildrenCmd(
childNsPtr = (Namespace *)Tcl_GetHashValue(entryPtr);
if ((pattern == NULL)
|| Tcl_StringMatch(childNsPtr->fullName, pattern)) {
- elemPtr = Tcl_NewStringObj(childNsPtr->fullName, TCL_INDEX_NONE);
+ elemPtr = Tcl_NewStringObj(childNsPtr->fullName, -1);
Tcl_ListObjAppendElement(interp, listPtr, elemPtr);
}
entryPtr = Tcl_NextHashEntry(&search);
@@ -3185,7 +3185,7 @@ NamespaceCodeCmd(
if (currNsPtr == (Namespace *) TclGetGlobalNamespace(interp)) {
TclNewLiteralStringObj(objPtr, "::");
} else {
- objPtr = Tcl_NewStringObj(currNsPtr->fullName, TCL_INDEX_NONE);
+ objPtr = Tcl_NewStringObj(currNsPtr->fullName, -1);
}
Tcl_ListObjAppendElement(interp, listPtr, objPtr);
@@ -3243,7 +3243,7 @@ NamespaceCurrentCmd(
if (currNsPtr == (Namespace *) TclGetGlobalNamespace(interp)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj("::", 2));
} else {
- Tcl_SetObjResult(interp, Tcl_NewStringObj(currNsPtr->fullName, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(currNsPtr->fullName, -1));
}
return TCL_OK;
}
@@ -3999,7 +3999,7 @@ NamespaceParentCmd(
if (nsPtr->parentPtr != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- nsPtr->parentPtr->fullName, TCL_INDEX_NONE));
+ nsPtr->parentPtr->fullName, -1));
}
return TCL_OK;
}
@@ -4039,7 +4039,7 @@ NamespacePathCmd(
Tcl_Obj *const objv[]) /* Argument objects. */
{
Namespace *nsPtr = (Namespace *) TclGetCurrentNamespace(interp);
- size_t nsObjc, i;
+ Tcl_Size nsObjc, i;
int result = TCL_ERROR;
Tcl_Obj **nsObjv;
Tcl_Namespace **namespaceList = NULL;
@@ -4060,7 +4060,7 @@ NamespacePathCmd(
for (i=0 ; i<nsPtr->commandPathLength ; i++) {
if (nsPtr->commandPathArray[i].nsPtr != NULL) {
Tcl_ListObjAppendElement(NULL, resultObj, Tcl_NewStringObj(
- nsPtr->commandPathArray[i].nsPtr->fullName, TCL_INDEX_NONE));
+ nsPtr->commandPathArray[i].nsPtr->fullName, -1));
}
}
Tcl_SetObjResult(interp, resultObj);
@@ -4123,13 +4123,13 @@ NamespacePathCmd(
void
TclSetNsPath(
Namespace *nsPtr, /* Namespace whose path is to be set. */
- size_t pathLength, /* Length of pathAry. */
+ Tcl_Size pathLength, /* Length of pathAry. */
Tcl_Namespace *pathAry[]) /* Array of namespaces that are the path. */
{
if (pathLength != 0) {
NamespacePathEntry *tmpPathArray =
(NamespacePathEntry *)Tcl_Alloc(sizeof(NamespacePathEntry) * pathLength);
- size_t i;
+ Tcl_Size i;
for (i=0 ; i<pathLength ; i++) {
tmpPathArray[i].nsPtr = (Namespace *) pathAry[i];
@@ -4180,7 +4180,7 @@ static void
UnlinkNsPath(
Namespace *nsPtr)
{
- size_t i;
+ Tcl_Size i;
for (i=0 ; i<nsPtr->commandPathLength ; i++) {
NamespacePathEntry *nsPathPtr = &nsPtr->commandPathArray[i];
@@ -4431,7 +4431,7 @@ Tcl_SetNamespaceUnknownHandler(
Tcl_Namespace *nsPtr, /* Namespace which is being updated. */
Tcl_Obj *handlerPtr) /* The new handler, or NULL to reset. */
{
- size_t lstlen = 0;
+ Tcl_Size lstlen = 0;
Namespace *currNsPtr = (Namespace *) nsPtr;
/*
@@ -4544,7 +4544,7 @@ NamespaceTailCmd(
}
if (p >= name) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj(p, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(p, -1));
}
return TCL_OK;
}
@@ -4927,8 +4927,8 @@ TclLogCommandInfo(
* command (must be <= command). */
const char *command, /* First character in command that generated
* the error. */
- size_t length, /* Number of bytes in command (TCL_INDEX_NONE
- * means use all bytes up to first null byte).
+ Tcl_Size length, /* Number of bytes in command (< 0 means use
+ * all bytes up to first null byte).
*/
const unsigned char *pc, /* Current pc of bytecode execution context */
Tcl_Obj **tosPtr) /* Current stack of bytecode execution
@@ -4960,10 +4960,10 @@ TclLogCommandInfo(
}
}
- if (length == TCL_INDEX_NONE) {
+ if (length < 0) {
length = strlen(command);
}
- overflow = (length > (size_t)limit);
+ overflow = (length > limit);
Tcl_AppendObjToErrorInfo(interp, Tcl_ObjPrintf(
"\n %s\n\"%.*s%s\"", ((iPtr->errorInfo == NULL)
? "while executing" : "invoked from within"),
@@ -5013,7 +5013,7 @@ TclLogCommandInfo(
iPtr->errorStack = newObj;
}
if (iPtr->resetErrorStack) {
- size_t len;
+ Tcl_Size len;
iPtr->resetErrorStack = 0;
TclListObjLengthM(interp, iPtr->errorStack, &len);
@@ -5085,7 +5085,7 @@ void
TclErrorStackResetIf(
Tcl_Interp *interp,
const char *msg,
- size_t length)
+ Tcl_Size length)
{
Interp *iPtr = (Interp *) interp;
@@ -5098,7 +5098,7 @@ TclErrorStackResetIf(
iPtr->errorStack = newObj;
}
if (iPtr->resetErrorStack) {
- size_t len;
+ Tcl_Size len;
iPtr->resetErrorStack = 0;
TclListObjLengthM(interp, iPtr->errorStack, &len);
@@ -5140,7 +5140,7 @@ Tcl_LogCommandInfo(
* command (must be <= command). */
const char *command, /* First character in command that generated
* the error. */
- size_t length) /* Number of bytes in command (-1 means use
+ Tcl_Size length) /* Number of bytes in command (-1 means use
* all bytes up to first null byte). */
{
TclLogCommandInfo(interp, script, command, length, NULL, NULL);
diff --git a/generic/tclOO.c b/generic/tclOO.c
index bee06e2..71fea6d 100644
--- a/generic/tclOO.c
+++ b/generic/tclOO.c
@@ -352,14 +352,14 @@ InitFoundation(
Tcl_DStringInit(&buffer);
for (i = 0 ; defineCmds[i].name ; i++) {
TclDStringAppendLiteral(&buffer, "::oo::define::");
- Tcl_DStringAppend(&buffer, defineCmds[i].name, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&buffer, defineCmds[i].name, -1);
Tcl_CreateObjCommand(interp, Tcl_DStringValue(&buffer),
defineCmds[i].objProc, INT2PTR(defineCmds[i].flag), NULL);
Tcl_DStringFree(&buffer);
}
for (i = 0 ; objdefCmds[i].name ; i++) {
TclDStringAppendLiteral(&buffer, "::oo::objdefine::");
- Tcl_DStringAppend(&buffer, objdefCmds[i].name, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&buffer, objdefCmds[i].name, -1);
Tcl_CreateObjCommand(interp, Tcl_DStringValue(&buffer),
objdefCmds[i].objProc, INT2PTR(objdefCmds[i].flag), NULL);
Tcl_DStringFree(&buffer);
@@ -960,7 +960,7 @@ TclOOReleaseClassContents(
Object *oPtr) /* The object representing the class. */
{
FOREACH_HASH_DECLS;
- size_t i;
+ Tcl_Size i;
Class *clsPtr = oPtr->classPtr, *tmpClsPtr;
Method *mPtr;
Foundation *fPtr = oPtr->fPtr;
@@ -1121,7 +1121,7 @@ ObjectNamespaceDeleted(
Tcl_Obj *filterObj, *variableObj;
PrivateVariableMapping *privateVariable;
Tcl_Interp *interp = oPtr->fPtr->interp;
- size_t i;
+ Tcl_Size i;
if (Destructing(oPtr)) {
/*
@@ -1362,7 +1362,7 @@ TclOORemoveFromInstances(
Class *clsPtr) /* The class (possibly) containing the
* reference to the instance. */
{
- size_t i;
+ Tcl_Size i;
int res = 0;
Object *instPtr;
@@ -1425,7 +1425,7 @@ TclOORemoveFromMixins(
Object *oPtr) /* The object (possibly) containing the
* reference to the mixin. */
{
- size_t i;
+ Tcl_Size i;
int res = 0;
Class *mixPtr;
@@ -1461,7 +1461,7 @@ TclOORemoveFromSubclasses(
Class *superPtr) /* The superclass to possibly remove the
* subclass reference from. */
{
- size_t i;
+ Tcl_Size i;
int res = 0;
Class *subclsPtr;
@@ -1526,7 +1526,7 @@ TclOORemoveFromMixinSubs(
Class *superPtr) /* The superclass to possibly remove the
* subclass reference from. */
{
- size_t i;
+ Tcl_Size i;
int res = 0;
Class *subclsPtr;
@@ -1667,10 +1667,10 @@ Tcl_NewObjectInstance(
const char *nsNameStr, /* Name of namespace to create inside object,
* or NULL to ask the code to pick its own
* unique name. */
- size_t objc, /* Number of arguments. Negative value means
+ Tcl_Size objc, /* Number of arguments. Negative value means
* do not call constructor. */
Tcl_Obj *const *objv, /* Argument list. */
- size_t skip) /* Number of arguments to _not_ pass to the
+ Tcl_Size skip) /* Number of arguments to _not_ pass to the
* constructor. */
{
Class *classPtr = (Class *) cls;
@@ -1735,10 +1735,10 @@ TclNRNewObjectInstance(
const char *nsNameStr, /* Name of namespace to create inside object,
* or NULL to ask the code to pick its own
* unique name. */
- size_t objc, /* Number of arguments. Negative value means
+ Tcl_Size objc, /* Number of arguments. Negative value means
* do not call constructor. */
Tcl_Obj *const *objv, /* Argument list. */
- size_t skip, /* Number of arguments to _not_ pass to the
+ Tcl_Size skip, /* Number of arguments to _not_ pass to the
* constructor. */
Tcl_Object *objectPtr) /* Place to write the object reference upon
* successful allocation. */
@@ -1758,7 +1758,7 @@ TclNRNewObjectInstance(
* object cloning only). If there aren't any constructors, we do nothing.
*/
- if (objc == TCL_INDEX_NONE) {
+ if (objc < 0) {
*objectPtr = (Tcl_Object) oPtr;
return TCL_OK;
}
@@ -1870,7 +1870,7 @@ FinalizeAlloc(
if (result != TCL_ERROR && Destructing(oPtr)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "object deleted in constructor", TCL_INDEX_NONE));
+ "object deleted in constructor", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "STILLBORN", NULL);
result = TCL_ERROR;
}
@@ -1932,7 +1932,7 @@ Tcl_CopyObjectInstance(
CallContext *contextPtr;
Tcl_Obj *keyPtr, *filterObj, *variableObj, *args[3];
PrivateVariableMapping *privateVariable;
- size_t i;
+ Tcl_Size i;
int result;
/*
@@ -1941,7 +1941,7 @@ Tcl_CopyObjectInstance(
if (IsRootClass(oPtr)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "may not clone the class of classes", TCL_INDEX_NONE));
+ "may not clone the class of classes", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "CLONING_CLASS", NULL);
return NULL;
}
@@ -1952,7 +1952,7 @@ Tcl_CopyObjectInstance(
o2Ptr = (Object *) Tcl_NewObjectInstance(interp,
(Tcl_Class) oPtr->selfCls, targetName, targetNamespaceName, TCL_INDEX_NONE,
- NULL, TCL_INDEX_NONE);
+ NULL, -1);
if (o2Ptr == NULL) {
return NULL;
}
@@ -2749,7 +2749,7 @@ TclOOObjectCmdCore(
}
if (contextPtr->index >= contextPtr->callPtr->numChain) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "no valid method implementation", TCL_INDEX_NONE));
+ "no valid method implementation", -1));
Tcl_SetErrorCode(interp, "TCL", "LOOKUP", "METHOD",
TclGetString(methodNamePtr), NULL);
TclOODeleteContext(contextPtr);
@@ -2799,9 +2799,9 @@ int
Tcl_ObjectContextInvokeNext(
Tcl_Interp *interp,
Tcl_ObjectContext context,
- size_t objc,
+ Tcl_Size objc,
Tcl_Obj *const *objv,
- size_t skip)
+ Tcl_Size skip)
{
CallContext *contextPtr = (CallContext *) context;
size_t savedIndex = contextPtr->index;
@@ -2871,9 +2871,9 @@ int
TclNRObjectContextInvokeNext(
Tcl_Interp *interp,
Tcl_ObjectContext context,
- size_t objc,
+ Tcl_Size objc,
Tcl_Obj *const *objv,
- size_t skip)
+ Tcl_Size skip)
{
CallContext *contextPtr = (CallContext *) context;
@@ -3000,7 +3000,7 @@ TclOOIsReachable(
Class *targetPtr,
Class *startPtr)
{
- size_t i;
+ Tcl_Size i;
Class *superPtr;
tailRecurse:
@@ -3093,7 +3093,7 @@ Tcl_ObjectContextObject(
return (Tcl_Object) ((CallContext *)context)->oPtr;
}
-size_t
+Tcl_Size
Tcl_ObjectContextSkippedArgs(
Tcl_ObjectContext context)
{
diff --git a/generic/tclOO.decls b/generic/tclOO.decls
index 3783adf..44fda7d 100644
--- a/generic/tclOO.decls
+++ b/generic/tclOO.decls
@@ -68,8 +68,8 @@ declare 12 {
}
declare 13 {
Tcl_Object Tcl_NewObjectInstance(Tcl_Interp *interp, Tcl_Class cls,
- const char *nameStr, const char *nsNameStr, size_t objc,
- Tcl_Obj *const *objv, size_t skip)
+ const char *nameStr, const char *nsNameStr, Tcl_Size objc,
+ Tcl_Obj *const *objv, Tcl_Size skip)
}
declare 14 {
int Tcl_ObjectDeleted(Tcl_Object object)
@@ -84,7 +84,7 @@ declare 17 {
Tcl_Object Tcl_ObjectContextObject(Tcl_ObjectContext context)
}
declare 18 {
- size_t Tcl_ObjectContextSkippedArgs(Tcl_ObjectContext context)
+ Tcl_Size Tcl_ObjectContextSkippedArgs(Tcl_ObjectContext context)
}
declare 19 {
void *Tcl_ClassGetMetadata(Tcl_Class clazz,
@@ -104,8 +104,8 @@ declare 22 {
}
declare 23 {
int Tcl_ObjectContextInvokeNext(Tcl_Interp *interp,
- Tcl_ObjectContext context, size_t objc, Tcl_Obj *const *objv,
- size_t skip)
+ Tcl_ObjectContext context, Tcl_Size objc, Tcl_Obj *const *objv,
+ Tcl_Size skip)
}
declare 24 {
Tcl_ObjectMapMethodNameProc *Tcl_ObjectGetMethodNameMapper(
@@ -218,12 +218,12 @@ declare 11 {
Tcl_Obj *const *objv)
}
declare 12 {
- void TclOOObjectSetFilters(Object *oPtr, size_t numFilters,
+ void TclOOObjectSetFilters(Object *oPtr, Tcl_Size numFilters,
Tcl_Obj *const *filters)
}
declare 13 {
void TclOOClassSetFilters(Tcl_Interp *interp, Class *classPtr,
- size_t numFilters, Tcl_Obj *const *filters)
+ Tcl_Size numFilters, Tcl_Obj *const *filters)
}
declare 14 {
void TclOOObjectSetMixins(Object *oPtr, size_t numMixins,
diff --git a/generic/tclOOBasic.c b/generic/tclOOBasic.c
index 1ad351d..c9b0d5f 100644
--- a/generic/tclOOBasic.c
+++ b/generic/tclOOBasic.c
@@ -100,10 +100,10 @@ TclOO_Class_Constructor(
* here (and the class definition delegate doesn't run any constructors).
*/
- nameObj = Tcl_NewStringObj(oPtr->namespacePtr->fullName, TCL_INDEX_NONE);
- Tcl_AppendToObj(nameObj, ":: oo ::delegate", TCL_INDEX_NONE);
+ nameObj = Tcl_NewStringObj(oPtr->namespacePtr->fullName, -1);
+ Tcl_AppendToObj(nameObj, ":: oo ::delegate", -1);
Tcl_NewObjectInstance(interp, (Tcl_Class) oPtr->fPtr->classCls,
- TclGetString(nameObj), NULL, TCL_INDEX_NONE, NULL, TCL_INDEX_NONE);
+ TclGetString(nameObj), NULL, -1, NULL, -1);
Tcl_DecrRefCount(nameObj);
/*
@@ -148,7 +148,7 @@ DecrRefsPostClassConstructor(
TclDecrRefCount(invoke[0]);
TclDecrRefCount(invoke[1]);
TclDecrRefCount(invoke[2]);
- invoke[0] = Tcl_NewStringObj("::oo::MixinClassDelegates", TCL_INDEX_NONE);
+ invoke[0] = Tcl_NewStringObj("::oo::MixinClassDelegates", -1);
invoke[1] = TclOOObjectName(interp, oPtr);
Tcl_IncrRefCount(invoke[0]);
Tcl_IncrRefCount(invoke[1]);
@@ -205,7 +205,7 @@ TclOO_Class_Create(
* Check we have the right number of (sensible) arguments.
*/
- if ((size_t)objc < 1 + Tcl_ObjectContextSkippedArgs(context)) {
+ if (objc < 1 + Tcl_ObjectContextSkippedArgs(context)) {
Tcl_WrongNumArgs(interp, Tcl_ObjectContextSkippedArgs(context), objv,
"objectName ?arg ...?");
return TCL_ERROR;
@@ -214,7 +214,7 @@ TclOO_Class_Create(
objv[Tcl_ObjectContextSkippedArgs(context)], &len);
if (len == 0) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "object name must not be empty", TCL_INDEX_NONE));
+ "object name must not be empty", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "EMPTY_NAME", NULL);
return TCL_ERROR;
}
@@ -270,7 +270,7 @@ TclOO_Class_CreateNs(
* Check we have the right number of (sensible) arguments.
*/
- if ((size_t)objc + 1 < Tcl_ObjectContextSkippedArgs(context) + 3) {
+ if (objc + 1 < Tcl_ObjectContextSkippedArgs(context) + 3) {
Tcl_WrongNumArgs(interp, Tcl_ObjectContextSkippedArgs(context), objv,
"objectName namespaceName ?arg ...?");
return TCL_ERROR;
@@ -279,7 +279,7 @@ TclOO_Class_CreateNs(
objv[Tcl_ObjectContextSkippedArgs(context)], &len);
if (len == 0) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "object name must not be empty", TCL_INDEX_NONE));
+ "object name must not be empty", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "EMPTY_NAME", NULL);
return TCL_ERROR;
}
@@ -287,7 +287,7 @@ TclOO_Class_CreateNs(
objv[Tcl_ObjectContextSkippedArgs(context)+1], &len);
if (len == 0) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "namespace name must not be empty", TCL_INDEX_NONE));
+ "namespace name must not be empty", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "EMPTY_NAME", NULL);
return TCL_ERROR;
}
@@ -600,14 +600,14 @@ TclOO_Object_Unknown(
TclGetString(objv[skip]));
for (i=0 ; i<numMethodNames-1 ; i++) {
if (i) {
- Tcl_AppendToObj(errorMsg, ", ", TCL_INDEX_NONE);
+ Tcl_AppendToObj(errorMsg, ", ", -1);
}
- Tcl_AppendToObj(errorMsg, methodNames[i], TCL_INDEX_NONE);
+ Tcl_AppendToObj(errorMsg, methodNames[i], -1);
}
if (i) {
- Tcl_AppendToObj(errorMsg, " or ", TCL_INDEX_NONE);
+ Tcl_AppendToObj(errorMsg, " or ", -1);
}
- Tcl_AppendToObj(errorMsg, methodNames[i], TCL_INDEX_NONE);
+ Tcl_AppendToObj(errorMsg, methodNames[i], -1);
Tcl_Free((void *)methodNames);
Tcl_SetObjResult(interp, errorMsg);
Tcl_SetErrorCode(interp, "TCL", "LOOKUP", "METHOD",
@@ -637,9 +637,9 @@ TclOO_Object_LinkVar(
Interp *iPtr = (Interp *) interp;
Tcl_Object object = Tcl_ObjectContextObject(context);
Namespace *savedNsPtr;
- size_t i;
+ Tcl_Size i;
- if ((size_t)objc < Tcl_ObjectContextSkippedArgs(context)) {
+ if (objc < Tcl_ObjectContextSkippedArgs(context)) {
Tcl_WrongNumArgs(interp, Tcl_ObjectContextSkippedArgs(context), objv,
"?varName ...?");
return TCL_ERROR;
@@ -655,7 +655,7 @@ TclOO_Object_LinkVar(
return TCL_OK;
}
- for (i = Tcl_ObjectContextSkippedArgs(context) ; i < (size_t)objc ; i++) {
+ for (i = Tcl_ObjectContextSkippedArgs(context) ; i < objc ; i++) {
Var *varPtr, *aryPtr;
const char *varName = TclGetString(objv[i]);
@@ -780,7 +780,7 @@ TclOO_Object_VarName(
Method *mPtr = callerContext->callPtr->chain[
callerContext->index].mPtr;
PrivateVariableMapping *pvPtr;
- size_t i;
+ Tcl_Size i;
if (mPtr->declaringObjectPtr == oPtr) {
FOREACH_STRUCT(pvPtr, oPtr->privateVariables) {
@@ -816,7 +816,7 @@ TclOO_Object_VarName(
}
}
- varNamePtr = Tcl_NewStringObj(namespacePtr->fullName, TCL_INDEX_NONE);
+ varNamePtr = Tcl_NewStringObj(namespacePtr->fullName, -1);
Tcl_AppendToObj(varNamePtr, "::", 2);
Tcl_AppendObjToObj(varNamePtr, argPtr);
}
@@ -842,10 +842,10 @@ TclOO_Object_VarName(
* WARNING! This code pokes inside the implementation of hash tables!
*/
- Tcl_AppendToObj(varNamePtr, "(", TCL_INDEX_NONE);
+ Tcl_AppendToObj(varNamePtr, "(", -1);
Tcl_AppendObjToObj(varNamePtr, ((VarInHash *)
varPtr)->entry.key.objPtr);
- Tcl_AppendToObj(varNamePtr, ")", TCL_INDEX_NONE);
+ Tcl_AppendToObj(varNamePtr, ")", -1);
} else {
Tcl_GetVariableFullName(interp, (Tcl_Var) varPtr, varNamePtr);
}
@@ -912,7 +912,7 @@ TclOONextToObjCmd(
CallFrame *framePtr = iPtr->varFramePtr;
Class *classPtr;
CallContext *contextPtr;
- size_t i;
+ Tcl_Size i;
Tcl_Object object;
const char *methodType;
@@ -1092,14 +1092,14 @@ TclOOSelfObjCmd(
return TCL_OK;
case SELF_NS:
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- contextPtr->oPtr->namespacePtr->fullName, TCL_INDEX_NONE));
+ contextPtr->oPtr->namespacePtr->fullName, -1));
return TCL_OK;
case SELF_CLASS: {
Class *clsPtr = CurrentlyInvoked(contextPtr).mPtr->declaringClassPtr;
if (clsPtr == NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "method not defined by a class", TCL_INDEX_NONE));
+ "method not defined by a class", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "UNMATCHED_CONTEXT", NULL);
return TCL_ERROR;
}
@@ -1120,7 +1120,7 @@ TclOOSelfObjCmd(
case SELF_FILTER:
if (!CurrentlyInvoked(contextPtr).isFilter) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "not inside a filtering context", TCL_INDEX_NONE));
+ "not inside a filtering context", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "UNMATCHED_CONTEXT", NULL);
return TCL_ERROR;
} else {
@@ -1137,7 +1137,7 @@ TclOOSelfObjCmd(
}
result[0] = TclOOObjectName(interp, oPtr);
- result[1] = Tcl_NewStringObj(type, TCL_INDEX_NONE);
+ result[1] = Tcl_NewStringObj(type, -1);
result[2] = miPtr->mPtr->namePtr;
Tcl_SetObjResult(interp, Tcl_NewListObj(3, result));
return TCL_OK;
@@ -1146,7 +1146,7 @@ TclOOSelfObjCmd(
if ((framePtr->callerVarPtr == NULL) ||
!(framePtr->callerVarPtr->isProcCallFrame & FRAME_IS_METHOD)){
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "caller is not an object", TCL_INDEX_NONE));
+ "caller is not an object", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "CONTEXT_REQUIRED", NULL);
return TCL_ERROR;
} else {
@@ -1164,7 +1164,7 @@ TclOOSelfObjCmd(
*/
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "method without declarer!", TCL_INDEX_NONE));
+ "method without declarer!", -1));
return TCL_ERROR;
}
@@ -1196,7 +1196,7 @@ TclOOSelfObjCmd(
*/
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "method without declarer!", TCL_INDEX_NONE));
+ "method without declarer!", -1));
return TCL_ERROR;
}
@@ -1214,13 +1214,13 @@ TclOOSelfObjCmd(
case SELF_TARGET:
if (!CurrentlyInvoked(contextPtr).isFilter) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "not inside a filtering context", TCL_INDEX_NONE));
+ "not inside a filtering context", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "UNMATCHED_CONTEXT", NULL);
return TCL_ERROR;
} else {
Method *mPtr;
Object *declarerPtr;
- size_t i;
+ Tcl_Size i;
for (i=contextPtr->index ; i<contextPtr->callPtr->numChain ; i++){
if (!contextPtr->callPtr->chain[i].isFilter) {
@@ -1241,7 +1241,7 @@ TclOOSelfObjCmd(
*/
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "method without declarer!", TCL_INDEX_NONE));
+ "method without declarer!", -1));
return TCL_ERROR;
}
result[0] = TclOOObjectName(interp, declarerPtr);
diff --git a/generic/tclOOCall.c b/generic/tclOOCall.c
index fcf7f2b..6523b6f 100644
--- a/generic/tclOOCall.c
+++ b/generic/tclOOCall.c
@@ -327,7 +327,7 @@ TclOOInvokeContext(
*/
if (contextPtr->index == 0) {
- size_t i;
+ Tcl_Size i;
for (i = 0 ; i < contextPtr->callPtr->numChain ; i++) {
AddRef(contextPtr->callPtr->chain[i].mPtr);
@@ -409,7 +409,7 @@ FinalizeMethodRefs(
int result)
{
CallContext *contextPtr = (CallContext *)data[0];
- size_t i;
+ Tcl_Size i;
for (i = 0 ; i < contextPtr->callPtr->numChain ; i++) {
TclOODelMethodRef(contextPtr->callPtr->chain[i].mPtr);
@@ -450,7 +450,7 @@ TclOOGetSortedMethodList(
* at. Is set-like in nature and keyed by
* pointer to class. */
FOREACH_HASH_DECLS;
- size_t i, numStrings;
+ Tcl_Size i, numStrings;
Class *mixinPtr;
Tcl_Obj *namePtr;
Method *mPtr;
@@ -691,7 +691,7 @@ AddClassMethodNames(
* pointers to the classes, and the values are
* immaterial. */
{
- size_t i;
+ Tcl_Size i;
/*
* If we've already started looking at this class, stop working on it now
@@ -882,7 +882,7 @@ AddSimpleChainToCallContext(
* NULL, either the filter was declared by the
* object or this isn't a filter. */
{
- size_t i;
+ Tcl_Size i;
int foundPrivate = 0, blockedUnexported = 0;
Tcl_HashEntry *hPtr;
Method *mPtr;
@@ -975,7 +975,7 @@ AddMethodToCallChain(
* not passed a mixin. */
{
CallChain *callPtr = cbPtr->callChainPtr;
- size_t i;
+ Tcl_Size i;
/*
* Return if this is just an entry used to record whether this is a public
@@ -1155,7 +1155,7 @@ TclOOGetCallContext(
CallContext *contextPtr;
CallChain *callPtr;
struct ChainBuilder cb;
- size_t i, count;
+ Tcl_Size i, count;
int doFilters, donePrivate = 0;
Tcl_HashEntry *hPtr;
Tcl_HashTable doneFilters;
@@ -1416,7 +1416,7 @@ TclOOGetStereotypeCallChain(
{
CallChain *callPtr;
struct ChainBuilder cb;
- size_t count;
+ Tcl_Size count;
Foundation *fPtr = clsPtr->thisPtr->fPtr;
Tcl_HashEntry *hPtr;
Tcl_HashTable doneFilters;
@@ -1551,7 +1551,7 @@ AddClassFiltersToCallContext(
int flags) /* Whether we've gone along a mixin link
* yet. */
{
- size_t i;
+ Tcl_Size i;
int clearedFlags =
flags & ~(TRAVERSED_MIXIN|OBJECT_MIXIN|BUILDING_MIXINS);
Class *superPtr, *mixinPtr;
@@ -1640,7 +1640,7 @@ AddPrivatesFromClassChainToCallContext(
* NULL, either the filter was declared by the
* object or this isn't a filter. */
{
- size_t i;
+ Tcl_Size i;
Class *superPtr;
/*
@@ -1718,7 +1718,7 @@ AddSimpleClassChainToCallContext(
* NULL, either the filter was declared by the
* object or this isn't a filter. */
{
- size_t i;
+ Tcl_Size i;
int privateDanger = 0;
Class *superPtr;
@@ -1804,7 +1804,7 @@ TclOORenderCallChain(
Tcl_Obj *filterLiteral, *methodLiteral, *objectLiteral, *privateLiteral;
Tcl_Obj *resultObj, *descObjs[4], **objv;
Foundation *fPtr = TclOOGetFoundation(interp);
- size_t i;
+ Tcl_Size i;
/*
* Allocate the literals (potentially) used in our description.
@@ -1832,7 +1832,7 @@ TclOORenderCallChain(
*/
objv = (Tcl_Obj **)TclStackAlloc(interp, callPtr->numChain * sizeof(Tcl_Obj *));
- for (i = 0 ; i < (size_t)callPtr->numChain ; i++) {
+ for (i = 0 ; i < callPtr->numChain ; i++) {
struct MInvoke *miPtr = &callPtr->chain[i];
descObjs[0] =
@@ -1848,7 +1848,7 @@ TclOORenderCallChain(
? Tcl_GetObjectName(interp,
(Tcl_Object) miPtr->mPtr->declaringClassPtr->thisPtr)
: objectLiteral;
- descObjs[3] = Tcl_NewStringObj(miPtr->mPtr->typePtr->name, TCL_INDEX_NONE);
+ descObjs[3] = Tcl_NewStringObj(miPtr->mPtr->typePtr->name, -1);
objv[i] = Tcl_NewListObj(4, descObjs);
}
@@ -1960,7 +1960,7 @@ AddSimpleDefineNamespaces(
* building. */
{
Class *mixinPtr;
- size_t i;
+ Tcl_Size i;
FOREACH(mixinPtr, oPtr->mixins) {
AddSimpleClassDefineNamespaces(mixinPtr, definePtr,
@@ -1989,7 +1989,7 @@ AddSimpleClassDefineNamespaces(
int flags) /* What sort of define chain are we
* building. */
{
- size_t i;
+ Tcl_Size i;
Class *superPtr;
/*
diff --git a/generic/tclOODecls.h b/generic/tclOODecls.h
index 0c141fe..cf55478 100644
--- a/generic/tclOODecls.h
+++ b/generic/tclOODecls.h
@@ -69,8 +69,8 @@ TCLAPI Tcl_Method Tcl_NewMethod(Tcl_Interp *interp, Tcl_Class cls,
/* 13 */
TCLAPI Tcl_Object Tcl_NewObjectInstance(Tcl_Interp *interp,
Tcl_Class cls, const char *nameStr,
- const char *nsNameStr, size_t objc,
- Tcl_Obj *const *objv, size_t skip);
+ const char *nsNameStr, Tcl_Size objc,
+ Tcl_Obj *const *objv, Tcl_Size skip);
/* 14 */
TCLAPI int Tcl_ObjectDeleted(Tcl_Object object);
/* 15 */
@@ -81,7 +81,7 @@ TCLAPI Tcl_Method Tcl_ObjectContextMethod(Tcl_ObjectContext context);
/* 17 */
TCLAPI Tcl_Object Tcl_ObjectContextObject(Tcl_ObjectContext context);
/* 18 */
-TCLAPI size_t Tcl_ObjectContextSkippedArgs(
+TCLAPI Tcl_Size Tcl_ObjectContextSkippedArgs(
Tcl_ObjectContext context);
/* 19 */
TCLAPI void * Tcl_ClassGetMetadata(Tcl_Class clazz,
@@ -99,8 +99,8 @@ TCLAPI void Tcl_ObjectSetMetadata(Tcl_Object object,
void *metadata);
/* 23 */
TCLAPI int Tcl_ObjectContextInvokeNext(Tcl_Interp *interp,
- Tcl_ObjectContext context, size_t objc,
- Tcl_Obj *const *objv, size_t skip);
+ Tcl_ObjectContext context, Tcl_Size objc,
+ Tcl_Obj *const *objv, Tcl_Size skip);
/* 24 */
TCLAPI Tcl_ObjectMapMethodNameProc * Tcl_ObjectGetMethodNameMapper(
Tcl_Object object);
@@ -159,17 +159,17 @@ typedef struct TclOOStubs {
Tcl_Obj * (*tcl_MethodName) (Tcl_Method method); /* 10 */
Tcl_Method (*tcl_NewInstanceMethod) (Tcl_Interp *interp, Tcl_Object object, Tcl_Obj *nameObj, int flags, const Tcl_MethodType *typePtr, void *clientData); /* 11 */
Tcl_Method (*tcl_NewMethod) (Tcl_Interp *interp, Tcl_Class cls, Tcl_Obj *nameObj, int flags, const Tcl_MethodType *typePtr, void *clientData); /* 12 */
- Tcl_Object (*tcl_NewObjectInstance) (Tcl_Interp *interp, Tcl_Class cls, const char *nameStr, const char *nsNameStr, size_t objc, Tcl_Obj *const *objv, size_t skip); /* 13 */
+ Tcl_Object (*tcl_NewObjectInstance) (Tcl_Interp *interp, Tcl_Class cls, const char *nameStr, const char *nsNameStr, Tcl_Size objc, Tcl_Obj *const *objv, Tcl_Size skip); /* 13 */
int (*tcl_ObjectDeleted) (Tcl_Object object); /* 14 */
int (*tcl_ObjectContextIsFiltering) (Tcl_ObjectContext context); /* 15 */
Tcl_Method (*tcl_ObjectContextMethod) (Tcl_ObjectContext context); /* 16 */
Tcl_Object (*tcl_ObjectContextObject) (Tcl_ObjectContext context); /* 17 */
- size_t (*tcl_ObjectContextSkippedArgs) (Tcl_ObjectContext context); /* 18 */
+ Tcl_Size (*tcl_ObjectContextSkippedArgs) (Tcl_ObjectContext context); /* 18 */
void * (*tcl_ClassGetMetadata) (Tcl_Class clazz, const Tcl_ObjectMetadataType *typePtr); /* 19 */
void (*tcl_ClassSetMetadata) (Tcl_Class clazz, const Tcl_ObjectMetadataType *typePtr, void *metadata); /* 20 */
void * (*tcl_ObjectGetMetadata) (Tcl_Object object, const Tcl_ObjectMetadataType *typePtr); /* 21 */
void (*tcl_ObjectSetMetadata) (Tcl_Object object, const Tcl_ObjectMetadataType *typePtr, void *metadata); /* 22 */
- int (*tcl_ObjectContextInvokeNext) (Tcl_Interp *interp, Tcl_ObjectContext context, size_t objc, Tcl_Obj *const *objv, size_t skip); /* 23 */
+ int (*tcl_ObjectContextInvokeNext) (Tcl_Interp *interp, Tcl_ObjectContext context, Tcl_Size objc, Tcl_Obj *const *objv, Tcl_Size skip); /* 23 */
Tcl_ObjectMapMethodNameProc * (*tcl_ObjectGetMethodNameMapper) (Tcl_Object object); /* 24 */
void (*tcl_ObjectSetMethodNameMapper) (Tcl_Object object, Tcl_ObjectMapMethodNameProc *mapMethodNameProc); /* 25 */
void (*tcl_ClassSetConstructor) (Tcl_Interp *interp, Tcl_Class clazz, Tcl_Method method); /* 26 */
diff --git a/generic/tclOODefineCmds.c b/generic/tclOODefineCmds.c
index 796a22f..f559786 100644
--- a/generic/tclOODefineCmds.c
+++ b/generic/tclOODefineCmds.c
@@ -249,10 +249,10 @@ RecomputeClassCacheFlag(
void
TclOOObjectSetFilters(
Object *oPtr,
- size_t numFilters,
+ Tcl_Size numFilters,
Tcl_Obj *const *filters)
{
- size_t i;
+ Tcl_Size i;
if (oPtr->filters.num) {
Tcl_Obj *filterObj;
@@ -309,10 +309,10 @@ void
TclOOClassSetFilters(
Tcl_Interp *interp,
Class *classPtr,
- size_t numFilters,
+ Tcl_Size numFilters,
Tcl_Obj *const *filters)
{
- size_t i;
+ Tcl_Size i;
if (classPtr->filters.num) {
Tcl_Obj *filterObj;
@@ -375,7 +375,7 @@ TclOOObjectSetMixins(
Class *const *mixins)
{
Class *mixinPtr;
- size_t i;
+ Tcl_Size i;
if (numMixins == 0) {
if (oPtr->mixins.num != 0) {
@@ -436,7 +436,7 @@ TclOOClassSetMixins(
Class *const *mixins)
{
Class *mixinPtr;
- size_t i;
+ Tcl_Size i;
if (numMixins == 0) {
if (classPtr->mixins.num != 0) {
@@ -485,11 +485,11 @@ TclOOClassSetMixins(
static inline void
InstallStandardVariableMapping(
VariableNameList *vnlPtr,
- size_t varc,
+ Tcl_Size varc,
Tcl_Obj *const *varv)
{
Tcl_Obj *variableObj;
- size_t i, n;
+ Tcl_Size i, n;
int created;
Tcl_HashTable uniqueTable;
@@ -535,12 +535,12 @@ InstallStandardVariableMapping(
static inline void
InstallPrivateVariableMapping(
PrivateVariableList *pvlPtr,
- size_t varc,
+ Tcl_Size varc,
Tcl_Obj *const *varv,
int creationEpoch)
{
PrivateVariableMapping *privatePtr;
- size_t i, n;
+ Tcl_Size i, n;
int created;
Tcl_HashTable uniqueTable;
@@ -633,7 +633,7 @@ RenameDeleteMethod(
if (hPtr == newHPtr) {
renameToSelf:
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "cannot rename method to itself", TCL_INDEX_NONE));
+ "cannot rename method to itself", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "RENAME_TO_SELF", NULL);
return TCL_ERROR;
} else if (!isNew) {
@@ -709,7 +709,7 @@ TclOOUnknownDefinition(
if (objc < 2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "bad call of unknown handler", TCL_INDEX_NONE));
+ "bad call of unknown handler", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "BAD_UNKNOWN", NULL);
return TCL_ERROR;
}
@@ -743,7 +743,7 @@ TclOOUnknownDefinition(
TclStackAlloc(interp, sizeof(Tcl_Obj*) * (objc - 1));
int result;
- newObjv[0] = Tcl_NewStringObj(matchedStr, TCL_INDEX_NONE);
+ newObjv[0] = Tcl_NewStringObj(matchedStr, -1);
Tcl_IncrRefCount(newObjv[0]);
if (objc > 2) {
memcpy(newObjv + 1, objv + 2, sizeof(Tcl_Obj *) * (objc - 2));
@@ -846,7 +846,7 @@ InitDefineContext(
if (namespacePtr == NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "no definition namespace available", TCL_INDEX_NONE));
+ "no definition namespace available", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -887,7 +887,7 @@ TclOOGetDefineCmdContext(
&& iPtr->varFramePtr->isProcCallFrame != PRIVATE_FRAME)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"this command may only be called from within the context of"
- " an ::oo::define or ::oo::objdefine command", TCL_INDEX_NONE));
+ " an ::oo::define or ::oo::objdefine command", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return NULL;
}
@@ -895,7 +895,7 @@ TclOOGetDefineCmdContext(
if (Tcl_ObjectDeleted(object)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"this command cannot be called when the object has been"
- " deleted", TCL_INDEX_NONE));
+ " deleted", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return NULL;
}
@@ -938,7 +938,7 @@ GetClassInOuterContext(
return NULL;
}
if (oPtr->classPtr == NULL) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj(errMsg, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(errMsg, -1));
Tcl_SetErrorCode(interp, "TCL", "LOOKUP", "CLASS",
TclGetString(className), NULL);
return NULL;
@@ -1034,7 +1034,7 @@ MagicDefinitionInvoke(
Tcl_Obj *objPtr, *obj2Ptr, **objs;
Tcl_Command cmd;
int isRoot, result, offset = cmdIndex + 1;
- size_t dummy;
+ Tcl_Size dummy;
/*
* More than one argument: fire them through the ensemble processing
@@ -1437,13 +1437,13 @@ TclOODefineClassObjCmd(
}
if (oPtr->flags & ROOT_OBJECT) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "may not modify the class of the root object class", TCL_INDEX_NONE));
+ "may not modify the class of the root object class", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
if (oPtr->flags & ROOT_CLASS) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "may not modify the class of the class of classes", TCL_INDEX_NONE));
+ "may not modify the class of the class of classes", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -1463,7 +1463,7 @@ TclOODefineClassObjCmd(
}
if (oPtr == clsPtr->thisPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "may not change classes into an instance of themselves", TCL_INDEX_NONE));
+ "may not change classes into an instance of themselves", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -1616,7 +1616,7 @@ TclOODefineDefnNsObjCmd(
}
if (!oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", TCL_INDEX_NONE));
+ "attempt to misuse API", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -1647,7 +1647,7 @@ TclOODefineDefnNsObjCmd(
if (nsPtr == NULL) {
return TCL_ERROR;
}
- nsNamePtr = Tcl_NewStringObj(nsPtr->fullName, TCL_INDEX_NONE);
+ nsNamePtr = Tcl_NewStringObj(nsPtr->fullName, -1);
Tcl_IncrRefCount(nsNamePtr);
}
@@ -1700,7 +1700,7 @@ TclOODefineDeleteMethodObjCmd(
}
if (!isInstanceDeleteMethod && !oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", TCL_INDEX_NONE));
+ "attempt to misuse API", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -1826,7 +1826,7 @@ TclOODefineExportObjCmd(
clsPtr = oPtr->classPtr;
if (!isInstanceExport && !clsPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", TCL_INDEX_NONE));
+ "attempt to misuse API", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -1920,7 +1920,7 @@ TclOODefineForwardObjCmd(
}
if (!isInstanceForward && !oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", TCL_INDEX_NONE));
+ "attempt to misuse API", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -1998,7 +1998,7 @@ TclOODefineMethodObjCmd(
}
if (!isInstanceMethod && !oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", TCL_INDEX_NONE));
+ "attempt to misuse API", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -2077,7 +2077,7 @@ TclOODefineRenameMethodObjCmd(
}
if (!isInstanceRenameMethod && !oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", TCL_INDEX_NONE));
+ "attempt to misuse API", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -2139,7 +2139,7 @@ TclOODefineUnexportObjCmd(
clsPtr = oPtr->classPtr;
if (!isInstanceUnexport && !clsPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", TCL_INDEX_NONE));
+ "attempt to misuse API", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -2268,9 +2268,9 @@ TclOODefineSlots(
Foundation *fPtr)
{
const struct DeclaredSlot *slotInfoPtr;
- Tcl_Obj *getName = Tcl_NewStringObj("Get", TCL_INDEX_NONE);
- Tcl_Obj *setName = Tcl_NewStringObj("Set", TCL_INDEX_NONE);
- Tcl_Obj *resolveName = Tcl_NewStringObj("Resolve", TCL_INDEX_NONE);
+ Tcl_Obj *getName = Tcl_NewStringObj("Get", -1);
+ Tcl_Obj *setName = Tcl_NewStringObj("Set", -1);
+ Tcl_Obj *resolveName = Tcl_NewStringObj("Resolve", -1);
Class *slotCls;
slotCls = ((Object *) Tcl_NewObjectInstance(fPtr->interp, (Tcl_Class)
@@ -2324,9 +2324,9 @@ ClassFilterGet(
{
Object *oPtr = (Object *) TclOOGetDefineCmdContext(interp);
Tcl_Obj *resultObj, *filterObj;
- size_t i;
+ Tcl_Size i;
- if (Tcl_ObjectContextSkippedArgs(context) != (size_t)objc) {
+ if (Tcl_ObjectContextSkippedArgs(context) != objc) {
Tcl_WrongNumArgs(interp, Tcl_ObjectContextSkippedArgs(context), objv,
NULL);
return TCL_ERROR;
@@ -2335,7 +2335,7 @@ ClassFilterGet(
return TCL_ERROR;
} else if (!oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", TCL_INDEX_NONE));
+ "attempt to misuse API", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -2357,10 +2357,10 @@ ClassFilterSet(
Tcl_Obj *const *objv)
{
Object *oPtr = (Object *) TclOOGetDefineCmdContext(interp);
- size_t filterc;
+ Tcl_Size filterc;
Tcl_Obj **filterv;
- if (Tcl_ObjectContextSkippedArgs(context) + 1 != (size_t)objc) {
+ if (Tcl_ObjectContextSkippedArgs(context) + 1 != objc) {
Tcl_WrongNumArgs(interp, Tcl_ObjectContextSkippedArgs(context), objv,
"filterList");
return TCL_ERROR;
@@ -2371,7 +2371,7 @@ ClassFilterSet(
return TCL_ERROR;
} else if (!oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", TCL_INDEX_NONE));
+ "attempt to misuse API", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
} else if (TclListObjGetElementsM(interp, objv[0], &filterc,
@@ -2405,9 +2405,9 @@ ClassMixinGet(
Object *oPtr = (Object *) TclOOGetDefineCmdContext(interp);
Tcl_Obj *resultObj;
Class *mixinPtr;
- size_t i;
+ Tcl_Size i;
- if (Tcl_ObjectContextSkippedArgs(context) != (size_t)objc) {
+ if (Tcl_ObjectContextSkippedArgs(context) != objc) {
Tcl_WrongNumArgs(interp, Tcl_ObjectContextSkippedArgs(context), objv,
NULL);
return TCL_ERROR;
@@ -2416,7 +2416,7 @@ ClassMixinGet(
return TCL_ERROR;
} else if (!oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", TCL_INDEX_NONE));
+ "attempt to misuse API", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -2440,11 +2440,11 @@ ClassMixinSet(
Tcl_Obj *const *objv)
{
Object *oPtr = (Object *) TclOOGetDefineCmdContext(interp);
- size_t mixinc, i;
+ Tcl_Size mixinc, i;
Tcl_Obj **mixinv;
Class **mixins;
- if (Tcl_ObjectContextSkippedArgs(context) + 1 != (size_t)objc) {
+ if (Tcl_ObjectContextSkippedArgs(context) + 1 != objc) {
Tcl_WrongNumArgs(interp, Tcl_ObjectContextSkippedArgs(context), objv,
"mixinList");
return TCL_ERROR;
@@ -2455,7 +2455,7 @@ ClassMixinSet(
return TCL_ERROR;
} else if (!oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", TCL_INDEX_NONE));
+ "attempt to misuse API", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
} else if (TclListObjGetElementsM(interp, objv[0], &mixinc,
@@ -2474,7 +2474,7 @@ ClassMixinSet(
}
if (TclOOIsReachable(oPtr->classPtr, mixins[i])) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "may not mix a class into itself", TCL_INDEX_NONE));
+ "may not mix a class into itself", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "SELF_MIXIN", NULL);
goto freeAndError;
}
@@ -2511,9 +2511,9 @@ ClassSuperGet(
Object *oPtr = (Object *) TclOOGetDefineCmdContext(interp);
Tcl_Obj *resultObj;
Class *superPtr;
- size_t i;
+ Tcl_Size i;
- if (Tcl_ObjectContextSkippedArgs(context) != (size_t)objc) {
+ if (Tcl_ObjectContextSkippedArgs(context) != objc) {
Tcl_WrongNumArgs(interp, Tcl_ObjectContextSkippedArgs(context), objv,
NULL);
return TCL_ERROR;
@@ -2522,7 +2522,7 @@ ClassSuperGet(
return TCL_ERROR;
} else if (!oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", TCL_INDEX_NONE));
+ "attempt to misuse API", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -2545,12 +2545,12 @@ ClassSuperSet(
Tcl_Obj *const *objv)
{
Object *oPtr = (Object *) TclOOGetDefineCmdContext(interp);
- size_t superc, j;
- size_t i;
+ Tcl_Size superc, j;
+ Tcl_Size i;
Tcl_Obj **superv;
Class **superclasses, *superPtr;
- if (Tcl_ObjectContextSkippedArgs(context) + 1 != (size_t)objc) {
+ if (Tcl_ObjectContextSkippedArgs(context) + 1 != objc) {
Tcl_WrongNumArgs(interp, Tcl_ObjectContextSkippedArgs(context), objv,
"superclassList");
return TCL_ERROR;
@@ -2561,12 +2561,12 @@ ClassSuperSet(
return TCL_ERROR;
} else if (!oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", TCL_INDEX_NONE));
+ "attempt to misuse API", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
} else if (oPtr == oPtr->fPtr->objectCls->thisPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "may not modify the superclass of the root object", TCL_INDEX_NONE));
+ "may not modify the superclass of the root object", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
} else if (TclListObjGetElementsM(interp, objv[0], &superc,
@@ -2614,7 +2614,7 @@ ClassSuperSet(
}
if (TclOOIsReachable(oPtr->classPtr, superclasses[i])) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to form circular dependency graph", TCL_INDEX_NONE));
+ "attempt to form circular dependency graph", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "CIRCULARITY", NULL);
failedAfterAlloc:
for (; i-- > 0 ;) {
@@ -2678,9 +2678,9 @@ ClassVarsGet(
{
Object *oPtr = (Object *) TclOOGetDefineCmdContext(interp);
Tcl_Obj *resultObj;
- size_t i;
+ Tcl_Size i;
- if (Tcl_ObjectContextSkippedArgs(context) != (size_t)objc) {
+ if (Tcl_ObjectContextSkippedArgs(context) != objc) {
Tcl_WrongNumArgs(interp, Tcl_ObjectContextSkippedArgs(context), objv,
NULL);
return TCL_ERROR;
@@ -2689,7 +2689,7 @@ ClassVarsGet(
return TCL_ERROR;
} else if (!oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", TCL_INDEX_NONE));
+ "attempt to misuse API", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -2721,11 +2721,11 @@ ClassVarsSet(
Tcl_Obj *const *objv)
{
Object *oPtr = (Object *) TclOOGetDefineCmdContext(interp);
- size_t i;
- size_t varc;
+ Tcl_Size i;
+ Tcl_Size varc;
Tcl_Obj **varv;
- if (Tcl_ObjectContextSkippedArgs(context) + 1 != (size_t)objc) {
+ if (Tcl_ObjectContextSkippedArgs(context) + 1 != objc) {
Tcl_WrongNumArgs(interp, Tcl_ObjectContextSkippedArgs(context), objv,
"filterList");
return TCL_ERROR;
@@ -2736,7 +2736,7 @@ ClassVarsSet(
return TCL_ERROR;
} else if (!oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", TCL_INDEX_NONE));
+ "attempt to misuse API", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
} else if (TclListObjGetElementsM(interp, objv[0], &varc,
@@ -2793,9 +2793,9 @@ ObjFilterGet(
{
Object *oPtr = (Object *) TclOOGetDefineCmdContext(interp);
Tcl_Obj *resultObj, *filterObj;
- size_t i;
+ Tcl_Size i;
- if (Tcl_ObjectContextSkippedArgs(context) != (size_t)objc) {
+ if (Tcl_ObjectContextSkippedArgs(context) != objc) {
Tcl_WrongNumArgs(interp, Tcl_ObjectContextSkippedArgs(context), objv,
NULL);
return TCL_ERROR;
@@ -2820,10 +2820,10 @@ ObjFilterSet(
Tcl_Obj *const *objv)
{
Object *oPtr = (Object *) TclOOGetDefineCmdContext(interp);
- size_t filterc;
+ Tcl_Size filterc;
Tcl_Obj **filterv;
- if (Tcl_ObjectContextSkippedArgs(context) + 1 != (size_t)objc) {
+ if (Tcl_ObjectContextSkippedArgs(context) + 1 != objc) {
Tcl_WrongNumArgs(interp, Tcl_ObjectContextSkippedArgs(context), objv,
"filterList");
return TCL_ERROR;
@@ -2862,9 +2862,9 @@ ObjMixinGet(
Object *oPtr = (Object *) TclOOGetDefineCmdContext(interp);
Tcl_Obj *resultObj;
Class *mixinPtr;
- size_t i;
+ Tcl_Size i;
- if (Tcl_ObjectContextSkippedArgs(context) != (size_t)objc) {
+ if (Tcl_ObjectContextSkippedArgs(context) != objc) {
Tcl_WrongNumArgs(interp, Tcl_ObjectContextSkippedArgs(context), objv,
NULL);
return TCL_ERROR;
@@ -2892,12 +2892,12 @@ ObjMixinSet(
Tcl_Obj *const *objv)
{
Object *oPtr = (Object *) TclOOGetDefineCmdContext(interp);
- size_t i;
- size_t mixinc;
+ Tcl_Size i;
+ Tcl_Size mixinc;
Tcl_Obj **mixinv;
Class **mixins;
- if (Tcl_ObjectContextSkippedArgs(context) + 1 != (size_t)objc) {
+ if (Tcl_ObjectContextSkippedArgs(context) + 1 != objc) {
Tcl_WrongNumArgs(interp, Tcl_ObjectContextSkippedArgs(context), objv,
"mixinList");
return TCL_ERROR;
@@ -2947,9 +2947,9 @@ ObjVarsGet(
{
Object *oPtr = (Object *) TclOOGetDefineCmdContext(interp);
Tcl_Obj *resultObj;
- size_t i;
+ Tcl_Size i;
- if (Tcl_ObjectContextSkippedArgs(context) != (size_t)objc) {
+ if (Tcl_ObjectContextSkippedArgs(context) != objc) {
Tcl_WrongNumArgs(interp, Tcl_ObjectContextSkippedArgs(context), objv,
NULL);
return TCL_ERROR;
@@ -2984,10 +2984,10 @@ ObjVarsSet(
Tcl_Obj *const *objv)
{
Object *oPtr = (Object *) TclOOGetDefineCmdContext(interp);
- size_t varc, i;
+ Tcl_Size varc, i;
Tcl_Obj **varv;
- if (Tcl_ObjectContextSkippedArgs(context) + 1 != (size_t)objc) {
+ if (Tcl_ObjectContextSkippedArgs(context) + 1 != objc) {
Tcl_WrongNumArgs(interp, Tcl_ObjectContextSkippedArgs(context), objv,
"variableList");
return TCL_ERROR;
diff --git a/generic/tclOOInfo.c b/generic/tclOOInfo.c
index a49282c..1f27b41 100644
--- a/generic/tclOOInfo.c
+++ b/generic/tclOOInfo.c
@@ -120,10 +120,10 @@ TclOOInitInfo(
infoCmd = Tcl_FindCommand(interp, "info", NULL, TCL_GLOBAL_ONLY);
if (infoCmd) {
Tcl_GetEnsembleMappingDict(NULL, infoCmd, &mapDict);
- Tcl_DictObjPut(NULL, mapDict, Tcl_NewStringObj("object", TCL_INDEX_NONE),
- Tcl_NewStringObj("::oo::InfoObject", TCL_INDEX_NONE));
- Tcl_DictObjPut(NULL, mapDict, Tcl_NewStringObj("class", TCL_INDEX_NONE),
- Tcl_NewStringObj("::oo::InfoClass", TCL_INDEX_NONE));
+ Tcl_DictObjPut(NULL, mapDict, Tcl_NewStringObj("object", -1),
+ Tcl_NewStringObj("::oo::InfoObject", -1));
+ Tcl_DictObjPut(NULL, mapDict, Tcl_NewStringObj("class", -1),
+ Tcl_NewStringObj("::oo::InfoClass", -1));
Tcl_SetEnsembleMappingDict(interp, infoCmd, mapDict);
}
}
@@ -194,7 +194,7 @@ InfoObjectClassCmd(
return TCL_OK;
} else {
Class *mixinPtr, *o2clsPtr;
- size_t i;
+ Tcl_Size i;
o2clsPtr = GetClassFromObj(interp, objv[2]);
if (o2clsPtr == NULL) {
@@ -264,7 +264,7 @@ InfoObjectDefnCmd(
procPtr = TclOOGetProcFromMethod((Method *)Tcl_GetHashValue(hPtr));
if (procPtr == NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "definition not available for this kind of method", TCL_INDEX_NONE));
+ "definition not available for this kind of method", -1));
Tcl_SetErrorCode(interp, "TCL", "LOOKUP", "METHOD",
TclGetString(objv[2]), NULL);
return TCL_ERROR;
@@ -278,7 +278,7 @@ InfoObjectDefnCmd(
TclNewObj(argObj);
Tcl_ListObjAppendElement(NULL, argObj,
- Tcl_NewStringObj(localPtr->name, TCL_INDEX_NONE));
+ Tcl_NewStringObj(localPtr->name, -1));
if (localPtr->defValuePtr != NULL) {
Tcl_ListObjAppendElement(NULL, argObj, localPtr->defValuePtr);
}
@@ -307,7 +307,7 @@ InfoObjectFiltersCmd(
int objc,
Tcl_Obj *const objv[])
{
- size_t i;
+ Tcl_Size i;
Tcl_Obj *filterObj, *resultObj;
Object *oPtr;
@@ -411,7 +411,7 @@ InfoObjectIsACmd(
} idx;
Object *oPtr, *o2Ptr;
int result = 0;
- size_t i;
+ Tcl_Size i;
if (objc < 3) {
Tcl_WrongNumArgs(interp, 1, objv, "category objName ?arg ...?");
@@ -610,7 +610,7 @@ InfoObjectMethodsCmd(
for (i=0 ; i<numNames ; i++) {
Tcl_ListObjAppendElement(NULL, resultObj,
- Tcl_NewStringObj(names[i], TCL_INDEX_NONE));
+ Tcl_NewStringObj(names[i], -1));
}
if (numNames > 0) {
Tcl_Free((void *)names);
@@ -679,7 +679,7 @@ InfoObjectMethodTypeCmd(
goto unknownMethod;
}
- Tcl_SetObjResult(interp, Tcl_NewStringObj(mPtr->typePtr->name, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(mPtr->typePtr->name, -1));
return TCL_OK;
}
@@ -703,7 +703,7 @@ InfoObjectMixinsCmd(
Class *mixinPtr;
Object *oPtr;
Tcl_Obj *resultObj;
- size_t i;
+ Tcl_Size i;
if (objc != 2) {
Tcl_WrongNumArgs(interp, 1, objv, "objName");
@@ -787,7 +787,7 @@ InfoObjectNsCmd(
}
Tcl_SetObjResult(interp,
- Tcl_NewStringObj(oPtr->namespacePtr->fullName, TCL_INDEX_NONE));
+ Tcl_NewStringObj(oPtr->namespacePtr->fullName, -1));
return TCL_OK;
}
@@ -810,7 +810,7 @@ InfoObjectVariablesCmd(
{
Object *oPtr;
Tcl_Obj *resultObj;
- size_t i;
+ Tcl_Size i;
int isPrivate = 0;
if (objc != 2 && objc != 3) {
@@ -943,7 +943,7 @@ InfoClassConstrCmd(
procPtr = TclOOGetProcFromMethod(clsPtr->constructorPtr);
if (procPtr == NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "definition not available for this kind of method", TCL_INDEX_NONE));
+ "definition not available for this kind of method", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "METHOD_TYPE", NULL);
return TCL_ERROR;
}
@@ -956,7 +956,7 @@ InfoClassConstrCmd(
TclNewObj(argObj);
Tcl_ListObjAppendElement(NULL, argObj,
- Tcl_NewStringObj(localPtr->name, TCL_INDEX_NONE));
+ Tcl_NewStringObj(localPtr->name, -1));
if (localPtr->defValuePtr != NULL) {
Tcl_ListObjAppendElement(NULL, argObj, localPtr->defValuePtr);
}
@@ -1010,7 +1010,7 @@ InfoClassDefnCmd(
procPtr = TclOOGetProcFromMethod((Method *)Tcl_GetHashValue(hPtr));
if (procPtr == NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "definition not available for this kind of method", TCL_INDEX_NONE));
+ "definition not available for this kind of method", -1));
Tcl_SetErrorCode(interp, "TCL", "LOOKUP", "METHOD",
TclGetString(objv[2]), NULL);
return TCL_ERROR;
@@ -1024,7 +1024,7 @@ InfoClassDefnCmd(
TclNewObj(argObj);
Tcl_ListObjAppendElement(NULL, argObj,
- Tcl_NewStringObj(localPtr->name, TCL_INDEX_NONE));
+ Tcl_NewStringObj(localPtr->name, -1));
if (localPtr->defValuePtr != NULL) {
Tcl_ListObjAppendElement(NULL, argObj, localPtr->defValuePtr);
}
@@ -1121,7 +1121,7 @@ InfoClassDestrCmd(
procPtr = TclOOGetProcFromMethod(clsPtr->destructorPtr);
if (procPtr == NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "definition not available for this kind of method", TCL_INDEX_NONE));
+ "definition not available for this kind of method", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "METHOD_TYPE", NULL);
return TCL_ERROR;
}
@@ -1147,7 +1147,7 @@ InfoClassFiltersCmd(
int objc,
Tcl_Obj *const objv[])
{
- size_t i;
+ Tcl_Size i;
Tcl_Obj *filterObj, *resultObj;
Class *clsPtr;
@@ -1238,7 +1238,7 @@ InfoClassInstancesCmd(
{
Object *oPtr;
Class *clsPtr;
- size_t i;
+ Tcl_Size i;
const char *pattern = NULL;
Tcl_Obj *resultObj;
@@ -1361,11 +1361,11 @@ InfoClassMethodsCmd(
TclNewObj(resultObj);
if (recurse) {
const char **names;
- size_t i, numNames = TclOOGetSortedClassMethodList(clsPtr, flag, &names);
+ Tcl_Size i, numNames = TclOOGetSortedClassMethodList(clsPtr, flag, &names);
for (i=0 ; i<numNames ; i++) {
Tcl_ListObjAppendElement(NULL, resultObj,
- Tcl_NewStringObj(names[i], TCL_INDEX_NONE));
+ Tcl_NewStringObj(names[i], -1));
}
if (numNames > 0) {
Tcl_Free((void *)names);
@@ -1431,7 +1431,7 @@ InfoClassMethodTypeCmd(
goto unknownMethod;
}
- Tcl_SetObjResult(interp, Tcl_NewStringObj(mPtr->typePtr->name, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(mPtr->typePtr->name, -1));
return TCL_OK;
}
@@ -1454,7 +1454,7 @@ InfoClassMixinsCmd(
{
Class *clsPtr, *mixinPtr;
Tcl_Obj *resultObj;
- size_t i;
+ Tcl_Size i;
if (objc != 2) {
Tcl_WrongNumArgs(interp, 1, objv, "className");
@@ -1496,7 +1496,7 @@ InfoClassSubsCmd(
{
Class *clsPtr, *subclassPtr;
Tcl_Obj *resultObj;
- size_t i;
+ Tcl_Size i;
const char *pattern = NULL;
if (objc != 2 && objc != 3) {
@@ -1551,7 +1551,7 @@ InfoClassSupersCmd(
{
Class *clsPtr, *superPtr;
Tcl_Obj *resultObj;
- size_t i;
+ Tcl_Size i;
if (objc != 2) {
Tcl_WrongNumArgs(interp, 1, objv, "className");
@@ -1590,7 +1590,7 @@ InfoClassVariablesCmd(
{
Class *clsPtr;
Tcl_Obj *resultObj;
- size_t i;
+ Tcl_Size i;
int isPrivate = 0;
if (objc != 2 && objc != 3) {
@@ -1663,7 +1663,7 @@ InfoObjectCallCmd(
NULL);
if (contextPtr == NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "cannot construct any call chain", TCL_INDEX_NONE));
+ "cannot construct any call chain", -1));
return TCL_ERROR;
}
Tcl_SetObjResult(interp,
@@ -1708,7 +1708,7 @@ InfoClassCallCmd(
callPtr = TclOOGetStereotypeCallChain(clsPtr, objv[2], PUBLIC_METHOD);
if (callPtr == NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "cannot construct any call chain", TCL_INDEX_NONE));
+ "cannot construct any call chain", -1));
return TCL_ERROR;
}
Tcl_SetObjResult(interp, TclOORenderCallChain(interp, callPtr));
diff --git a/generic/tclOOInt.h b/generic/tclOOInt.h
index 29e3b13..c3f6fc2 100644
--- a/generic/tclOOInt.h
+++ b/generic/tclOOInt.h
@@ -353,7 +353,7 @@ typedef struct Foundation {
Tcl_Namespace *helpersNs; /* Namespace containing the commands that are
* only valid when executing inside a
* procedural method. */
- Tcl_Size epoch; /* Used to invalidate method chains when the
+ Tcl_Size epoch; /* Used to invalidate method chains when the
* class structure changes. */
ThreadLocalData *tsdPtr; /* Counter so we can allocate a unique
* namespace to each object. */
@@ -387,12 +387,12 @@ struct MInvoke {
};
typedef struct CallChain {
- Tcl_Size objectCreationEpoch; /* The object's creation epoch. Note that the
+ Tcl_Size objectCreationEpoch;/* The object's creation epoch. Note that the
* object reference is not stored in the call
* chain; it is in the call context. */
- Tcl_Size objectEpoch; /* Local (object structure) epoch counter
+ Tcl_Size objectEpoch; /* Local (object structure) epoch counter
* snapshot. */
- Tcl_Size epoch; /* Global (class structure) epoch counter
+ Tcl_Size epoch; /* Global (class structure) epoch counter
* snapshot. */
int flags; /* Assorted flags, see below. */
Tcl_Size refCount; /* Reference count. */
@@ -405,9 +405,9 @@ typedef struct CallChain {
typedef struct CallContext {
Object *oPtr; /* The object associated with this call. */
- Tcl_Size index; /* Index into the call chain of the currently
+ Tcl_Size index; /* Index into the call chain of the currently
* executing method implementation. */
- Tcl_Size skip; /* Current number of arguments to skip; can
+ Tcl_Size skip; /* Current number of arguments to skip; can
* vary depending on whether it is a direct
* method call or a continuation via the
* [next] command. */
@@ -505,8 +505,8 @@ MODULE_SCOPE Tcl_Method TclNewMethod(Tcl_Interp *interp, Tcl_Class cls,
void *clientData);
MODULE_SCOPE int TclNRNewObjectInstance(Tcl_Interp *interp,
Tcl_Class cls, const char *nameStr,
- const char *nsNameStr, size_t objc,
- Tcl_Obj *const *objv, size_t skip,
+ const char *nsNameStr, Tcl_Size objc,
+ Tcl_Obj *const *objv, Tcl_Size skip,
Tcl_Object *objectPtr);
MODULE_SCOPE Object * TclNewObjectInstanceCommon(Tcl_Interp *interp,
Class *classPtr,
@@ -544,8 +544,8 @@ MODULE_SCOPE int TclOOInvokeContext(void *clientData,
Tcl_Interp *interp, int objc,
Tcl_Obj *const objv[]);
MODULE_SCOPE int TclNRObjectContextInvokeNext(Tcl_Interp *interp,
- Tcl_ObjectContext context, size_t objc,
- Tcl_Obj *const *objv, size_t skip);
+ Tcl_ObjectContext context, Tcl_Size objc,
+ Tcl_Obj *const *objv, Tcl_Size skip);
MODULE_SCOPE void TclOONewBasicMethod(Tcl_Interp *interp, Class *clsPtr,
const DeclaredClassMethod *dcm);
MODULE_SCOPE Tcl_Obj * TclOOObjectName(Tcl_Interp *interp, Object *oPtr);
diff --git a/generic/tclOOIntDecls.h b/generic/tclOOIntDecls.h
index 53c2a6f..17c20b6 100644
--- a/generic/tclOOIntDecls.h
+++ b/generic/tclOOIntDecls.h
@@ -79,10 +79,10 @@ TCLAPI int TclOOInvokeObject(Tcl_Interp *interp,
Tcl_Obj *const *objv);
/* 12 */
TCLAPI void TclOOObjectSetFilters(Object *oPtr,
- size_t numFilters, Tcl_Obj *const *filters);
+ Tcl_Size numFilters, Tcl_Obj *const *filters);
/* 13 */
TCLAPI void TclOOClassSetFilters(Tcl_Interp *interp,
- Class *classPtr, size_t numFilters,
+ Class *classPtr, Tcl_Size numFilters,
Tcl_Obj *const *filters);
/* 14 */
TCLAPI void TclOOObjectSetMixins(Object *oPtr, size_t numMixins,
@@ -108,8 +108,8 @@ typedef struct TclOOIntStubs {
Tcl_Method (*tclOONewProcInstanceMethodEx) (Tcl_Interp *interp, Tcl_Object oPtr, TclOO_PreCallProc *preCallPtr, TclOO_PostCallProc *postCallPtr, ProcErrorProc *errProc, void *clientData, Tcl_Obj *nameObj, Tcl_Obj *argsObj, Tcl_Obj *bodyObj, int flags, void **internalTokenPtr); /* 9 */
Tcl_Method (*tclOONewProcMethodEx) (Tcl_Interp *interp, Tcl_Class clsPtr, TclOO_PreCallProc *preCallPtr, TclOO_PostCallProc *postCallPtr, ProcErrorProc *errProc, void *clientData, Tcl_Obj *nameObj, Tcl_Obj *argsObj, Tcl_Obj *bodyObj, int flags, void **internalTokenPtr); /* 10 */
int (*tclOOInvokeObject) (Tcl_Interp *interp, Tcl_Object object, Tcl_Class startCls, int publicPrivate, size_t objc, Tcl_Obj *const *objv); /* 11 */
- void (*tclOOObjectSetFilters) (Object *oPtr, size_t numFilters, Tcl_Obj *const *filters); /* 12 */
- void (*tclOOClassSetFilters) (Tcl_Interp *interp, Class *classPtr, size_t numFilters, Tcl_Obj *const *filters); /* 13 */
+ void (*tclOOObjectSetFilters) (Object *oPtr, Tcl_Size numFilters, Tcl_Obj *const *filters); /* 12 */
+ void (*tclOOClassSetFilters) (Tcl_Interp *interp, Class *classPtr, Tcl_Size numFilters, Tcl_Obj *const *filters); /* 13 */
void (*tclOOObjectSetMixins) (Object *oPtr, size_t numMixins, Class *const *mixins); /* 14 */
void (*tclOOClassSetMixins) (Tcl_Interp *interp, Class *classPtr, size_t numMixins, Class *const *mixins); /* 15 */
} TclOOIntStubs;
diff --git a/generic/tclOOMethod.c b/generic/tclOOMethod.c
index 2ac21b8..ef128a7 100644
--- a/generic/tclOOMethod.c
+++ b/generic/tclOOMethod.c
@@ -387,7 +387,7 @@ TclOONewBasicMethod(
/* Name of the method, whether it is public,
* and the function to implement it. */
{
- Tcl_Obj *namePtr = Tcl_NewStringObj(dcm->name, TCL_INDEX_NONE);
+ Tcl_Obj *namePtr = Tcl_NewStringObj(dcm->name, -1);
Tcl_IncrRefCount(namePtr);
TclNewMethod(interp, (Tcl_Class) clsPtr, namePtr,
@@ -421,7 +421,7 @@ TclOONewProcInstanceMethod(
* structure's contents. NULL if caller is not
* interested. */
{
- size_t argsLen;
+ Tcl_Size argsLen;
ProcedureMethod *pmPtr;
Tcl_Method method;
@@ -473,7 +473,7 @@ TclOONewProcMethod(
* structure's contents. NULL if caller is not
* interested. */
{
- size_t argsLen; /* TCL_INDEX_NONE => delete argsObj before exit */
+ Tcl_Size argsLen; /* TCL_INDEX_NONE => delete argsObj before exit */
ProcedureMethod *pmPtr;
const char *procName;
Tcl_Method method;
@@ -1074,7 +1074,7 @@ ProcedureMethodCompiledVarConnect(
PrivateVariableMapping *privateVar;
Tcl_HashEntry *hPtr;
int isNew, cacheIt;
- size_t i, varLen, len;
+ Tcl_Size i, varLen, len;
const char *match, *varName;
/*
@@ -1188,7 +1188,7 @@ static int
ProcedureMethodCompiledVarResolver(
TCL_UNUSED(Tcl_Interp *),
const char *varName,
- size_t length,
+ Tcl_Size length,
TCL_UNUSED(Tcl_Namespace *),
Tcl_ResolvedVarInfo **rPtrPtr)
{
@@ -1269,7 +1269,7 @@ MethodErrorHandler(
TCL_UNUSED(Tcl_Obj *) /*methodNameObj*/)
/* We pull the method name out of context instead of from argument */
{
- size_t nameLen, objectNameLen;
+ Tcl_Size nameLen, objectNameLen;
CallContext *contextPtr = (CallContext *)((Interp *) interp)->varFramePtr->clientData;
Method *mPtr = contextPtr->callPtr->chain[contextPtr->index].mPtr;
const char *objectName, *kindName, *methodName =
@@ -1305,7 +1305,7 @@ ConstructorErrorHandler(
Method *mPtr = contextPtr->callPtr->chain[contextPtr->index].mPtr;
Object *declarerPtr;
const char *objectName, *kindName;
- size_t objectNameLen;
+ Tcl_Size objectNameLen;
if (mPtr->declaringObjectPtr != NULL) {
declarerPtr = mPtr->declaringObjectPtr;
@@ -1335,7 +1335,7 @@ DestructorErrorHandler(
Method *mPtr = contextPtr->callPtr->chain[contextPtr->index].mPtr;
Object *declarerPtr;
const char *objectName, *kindName;
- size_t objectNameLen;
+ Tcl_Size objectNameLen;
if (mPtr->declaringObjectPtr != NULL) {
declarerPtr = mPtr->declaringObjectPtr;
@@ -1410,7 +1410,7 @@ CloneProcedureMethod(
TclNewObj(argObj);
Tcl_ListObjAppendElement(NULL, argObj,
- Tcl_NewStringObj(localPtr->name, TCL_INDEX_NONE));
+ Tcl_NewStringObj(localPtr->name, -1));
if (localPtr->defValuePtr != NULL) {
Tcl_ListObjAppendElement(NULL, argObj, localPtr->defValuePtr);
}
@@ -1473,7 +1473,7 @@ TclOONewForwardInstanceMethod(
Tcl_Obj *prefixObj) /* List of arguments that form the command
* prefix to forward to. */
{
- size_t prefixLen;
+ Tcl_Size prefixLen;
ForwardMethod *fmPtr;
if (TclListObjLengthM(interp, prefixObj, &prefixLen) != TCL_OK) {
@@ -1481,7 +1481,7 @@ TclOONewForwardInstanceMethod(
}
if (prefixLen < 1) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "method forward prefix must be non-empty", TCL_INDEX_NONE));
+ "method forward prefix must be non-empty", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "BAD_FORWARD", NULL);
return NULL;
}
@@ -1512,7 +1512,7 @@ TclOONewForwardMethod(
Tcl_Obj *prefixObj) /* List of arguments that form the command
* prefix to forward to. */
{
- size_t prefixLen;
+ Tcl_Size prefixLen;
ForwardMethod *fmPtr;
if (TclListObjLengthM(interp, prefixObj, &prefixLen) != TCL_OK) {
@@ -1520,7 +1520,7 @@ TclOONewForwardMethod(
}
if (prefixLen < 1) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "method forward prefix must be non-empty", TCL_INDEX_NONE));
+ "method forward prefix must be non-empty", -1));
Tcl_SetErrorCode(interp, "TCL", "OO", "BAD_FORWARD", NULL);
return NULL;
}
@@ -1554,7 +1554,7 @@ InvokeForwardMethod(
CallContext *contextPtr = (CallContext *) context;
ForwardMethod *fmPtr = (ForwardMethod *)clientData;
Tcl_Obj **argObjs, **prefixObjs;
- size_t numPrefixes, skip = contextPtr->skip;
+ Tcl_Size numPrefixes, skip = contextPtr->skip;
int len;
/*
diff --git a/generic/tclObj.c b/generic/tclObj.c
index 8aa7dd4..0817686 100644
--- a/generic/tclObj.c
+++ b/generic/tclObj.c
@@ -329,12 +329,12 @@ typedef struct ResolvedCmdName {
* it's possible that the cmd's containing
* namespace was deleted and a new one created
* at the same address). */
- size_t refNsCmdEpoch; /* Value of the referencing namespace's
+ Tcl_Size refNsCmdEpoch; /* Value of the referencing namespace's
* cmdRefEpoch when the pointer was cached.
* Before using the cached pointer, we check
* if the namespace's epoch was incremented;
* if so, this cached pointer is invalid. */
- size_t cmdEpoch; /* Value of the command's cmdEpoch when this
+ Tcl_Size cmdEpoch; /* Value of the command's cmdEpoch when this
* pointer was cached. Before using the cached
* pointer, we check if the cmd's epoch was
* incremented; if so, the cmd was renamed,
@@ -848,7 +848,7 @@ Tcl_AppendAllObjTypes(
{
Tcl_HashEntry *hPtr;
Tcl_HashSearch search;
- size_t numElems;
+ Tcl_Size numElems;
/*
* Get the test for a valid list out of the way first.
@@ -867,7 +867,7 @@ Tcl_AppendAllObjTypes(
for (hPtr = Tcl_FirstHashEntry(&typeTable, &search);
hPtr != NULL; hPtr = Tcl_NextHashEntry(&search)) {
Tcl_ListObjAppendElement(NULL, objPtr,
- Tcl_NewStringObj((char *)Tcl_GetHashKey(&typeTable, hPtr), TCL_INDEX_NONE));
+ Tcl_NewStringObj((char *)Tcl_GetHashKey(&typeTable, hPtr), -1));
}
Tcl_MutexUnlock(&tableMutex);
return TCL_OK;
@@ -1702,7 +1702,7 @@ char *
Tcl_GetStringFromObj(
Tcl_Obj *objPtr, /* Object whose string rep byte pointer should
* be returned. */
- size_t *lengthPtr) /* If non-NULL, the location where the string
+ Tcl_Size *lengthPtr) /* If non-NULL, the location where the string
* rep's byte array length should * be stored.
* If NULL, no length is stored. */
{
@@ -2126,13 +2126,13 @@ TclSetBooleanFromAny(
badBoolean:
if (interp != NULL) {
- size_t length;
+ Tcl_Size length;
const char *str = Tcl_GetStringFromObj(objPtr, &length);
Tcl_Obj *msg;
TclNewLiteralStringObj(msg, "expected boolean value but got \"");
Tcl_AppendLimitedToObj(msg, str, length, 50, "");
- Tcl_AppendToObj(msg, "\"", TCL_INDEX_NONE);
+ Tcl_AppendToObj(msg, "\"", -1);
Tcl_SetObjResult(interp, msg);
Tcl_SetErrorCode(interp, "TCL", "VALUE", "BOOLEAN", NULL);
}
@@ -2145,7 +2145,7 @@ ParseBoolean(
{
int newBool;
char lowerCase[6];
- size_t i, length;
+ Tcl_Size i, length;
const char *str = Tcl_GetStringFromObj(objPtr, &length);
if ((length == 0) || (length > 5)) {
@@ -2421,7 +2421,7 @@ Tcl_GetDoubleFromObj(
if (isnan(objPtr->internalRep.doubleValue)) {
if (interp != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "floating point value is Not a Number", TCL_INDEX_NONE));
+ "floating point value is Not a Number", -1));
Tcl_SetErrorCode(interp, "TCL", "VALUE", "DOUBLE", "NAN",
NULL);
}
@@ -2553,7 +2553,7 @@ Tcl_GetIntFromObj(
if (interp != NULL) {
const char *s =
"integer value too large to represent";
- Tcl_SetObjResult(interp, Tcl_NewStringObj(s, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(s, -1));
Tcl_SetErrorCode(interp, "ARITH", "IOVERFLOW", s, NULL);
}
return TCL_ERROR;
@@ -2718,7 +2718,7 @@ Tcl_GetLongFromObj(
#endif
if (interp != NULL) {
const char *s = "integer value too large to represent";
- Tcl_Obj *msg = Tcl_NewStringObj(s, TCL_INDEX_NONE);
+ Tcl_Obj *msg = Tcl_NewStringObj(s, -1);
Tcl_SetObjResult(interp, msg);
Tcl_SetErrorCode(interp, "ARITH", "IOVERFLOW", s, NULL);
@@ -2953,7 +2953,7 @@ Tcl_GetWideIntFromObj(
}
if (interp != NULL) {
const char *s = "integer value too large to represent";
- Tcl_Obj *msg = Tcl_NewStringObj(s, TCL_INDEX_NONE);
+ Tcl_Obj *msg = Tcl_NewStringObj(s, -1);
Tcl_SetObjResult(interp, msg);
Tcl_SetErrorCode(interp, "ARITH", "IOVERFLOW", s, NULL);
@@ -3037,7 +3037,7 @@ Tcl_GetWideUIntFromObj(
if (interp != NULL) {
const char *s = "integer value too large to represent";
- Tcl_Obj *msg = Tcl_NewStringObj(s, TCL_INDEX_NONE);
+ Tcl_Obj *msg = Tcl_NewStringObj(s, -1);
Tcl_SetObjResult(interp, msg);
Tcl_SetErrorCode(interp, "ARITH", "IOVERFLOW", s, NULL);
@@ -4107,7 +4107,7 @@ TclHashObjKey(
void *keyPtr) /* Key from which to compute hash value. */
{
Tcl_Obj *objPtr = (Tcl_Obj *)keyPtr;
- size_t length;
+ Tcl_Size length;
const char *string = Tcl_GetStringFromObj(objPtr, &length);
TCL_HASH_TYPE result = 0;
@@ -4539,12 +4539,12 @@ Tcl_RepresentationCmd(
}
if (objv[1]->bytes) {
- Tcl_AppendToObj(descObj, ", string representation \"", TCL_INDEX_NONE);
+ Tcl_AppendToObj(descObj, ", string representation \"", -1);
Tcl_AppendLimitedToObj(descObj, objv[1]->bytes, objv[1]->length,
16, "...");
- Tcl_AppendToObj(descObj, "\"", TCL_INDEX_NONE);
+ Tcl_AppendToObj(descObj, "\"", -1);
} else {
- Tcl_AppendToObj(descObj, ", no string representation", TCL_INDEX_NONE);
+ Tcl_AppendToObj(descObj, ", no string representation", -1);
}
Tcl_SetObjResult(interp, descObj);
diff --git a/generic/tclOptimize.c b/generic/tclOptimize.c
index 7d3bc7b..e0a77aa 100644
--- a/generic/tclOptimize.c
+++ b/generic/tclOptimize.c
@@ -55,7 +55,7 @@ LocateTargetAddresses(
{
unsigned char *currentInstPtr, *targetInstPtr;
int isNew;
- size_t i;
+ Tcl_Size i;
Tcl_HashEntry *hPtr;
Tcl_HashSearch hSearch;
diff --git a/generic/tclParse.c b/generic/tclParse.c
index 75ffa26..ea15133 100644
--- a/generic/tclParse.c
+++ b/generic/tclParse.c
@@ -120,16 +120,16 @@ const unsigned char tclCharTypeTable[] = {
* Prototypes for local functions defined in this file:
*/
-static int CommandComplete(const char *script, size_t numBytes);
-static size_t ParseComment(const char *src, size_t numBytes,
+static int CommandComplete(const char *script, Tcl_Size numBytes);
+static Tcl_Size ParseComment(const char *src, Tcl_Size numBytes,
Tcl_Parse *parsePtr);
-static int ParseTokens(const char *src, size_t numBytes, int mask,
+static int ParseTokens(const char *src, Tcl_Size numBytes, int mask,
int flags, Tcl_Parse *parsePtr);
-static size_t ParseWhiteSpace(const char *src, size_t numBytes,
+static Tcl_Size ParseWhiteSpace(const char *src, Tcl_Size numBytes,
int *incompletePtr, char *typePtr);
-static size_t ParseAllWhiteSpace(const char *src, size_t numBytes,
+static Tcl_Size ParseAllWhiteSpace(const char *src, Tcl_Size numBytes,
int *incompletePtr);
-static int ParseHex(const char *src, size_t numBytes,
+static int ParseHex(const char *src, Tcl_Size numBytes,
int *resultPtr);
/*
@@ -152,7 +152,7 @@ void
TclParseInit(
Tcl_Interp *interp, /* Interpreter to use for error reporting */
const char *start, /* Start of string to be parsed. */
- size_t numBytes, /* Total number of bytes in string. If -1,
+ Tcl_Size numBytes, /* Total number of bytes in string. If -1,
* the script consists of all bytes up to the
* first null character. */
Tcl_Parse *parsePtr) /* Points to struct to initialize */
@@ -198,7 +198,7 @@ Tcl_ParseCommand(
* NULL, then no error message is provided. */
const char *start, /* First character of string containing one or
* more Tcl commands. */
- size_t numBytes, /* Total number of bytes in string. If -1,
+ Tcl_Size numBytes, /* Total number of bytes in string. If -1,
* the script consists of all bytes up to the
* first null character. */
int nested, /* Non-zero means this is a nested command:
@@ -219,16 +219,16 @@ Tcl_ParseCommand(
* command. */
const char *termPtr; /* Set by Tcl_ParseBraces/QuotedString to
* point to char after terminating one. */
- size_t scanned;
+ Tcl_Size scanned;
- if (numBytes == TCL_INDEX_NONE && start) {
+ if (numBytes < 0 && start) {
numBytes = strlen(start);
}
TclParseInit(interp, start, numBytes, parsePtr);
if ((start == NULL) && (numBytes != 0)) {
if (interp != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "can't parse a NULL pointer", TCL_INDEX_NONE));
+ "can't parse a NULL pointer", -1));
}
return TCL_ERROR;
}
@@ -282,13 +282,13 @@ Tcl_ParseCommand(
if (src[-1] == '"') {
if (interp != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "extra characters after close-quote", TCL_INDEX_NONE));
+ "extra characters after close-quote", -1));
}
parsePtr->errorType = TCL_PARSE_QUOTE_EXTRA;
} else {
if (interp != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "extra characters after close-brace", TCL_INDEX_NONE));
+ "extra characters after close-brace", -1));
}
parsePtr->errorType = TCL_PARSE_BRACE_EXTRA;
}
@@ -382,7 +382,7 @@ Tcl_ParseCommand(
tokenPtr->size = src - tokenPtr->start;
tokenPtr->numComponents = (int)parsePtr->numTokens - (wordIndex + 1);
if (expandWord) {
- size_t i;
+ Tcl_Size i;
int isLiteral = 1;
/*
@@ -429,7 +429,7 @@ Tcl_ParseCommand(
*/
while (nextElem < listEnd) {
- size_t size;
+ Tcl_Size size;
code = TclFindElement(NULL, nextElem, listEnd - nextElem,
&elemStart, &nextElem, &size, &literal);
@@ -621,10 +621,10 @@ TclIsBareword(
*----------------------------------------------------------------------
*/
-static size_t
+static Tcl_Size
ParseWhiteSpace(
const char *src, /* First character to parse. */
- size_t numBytes, /* Max number of bytes to scan. */
+ Tcl_Size numBytes, /* Max number of bytes to scan. */
int *incompletePtr, /* Set this boolean memory to true if parsing
* indicates an incomplete command. */
char *typePtr) /* Points to location to store character type
@@ -675,17 +675,17 @@ ParseWhiteSpace(
*----------------------------------------------------------------------
*/
-static size_t
+static Tcl_Size
ParseAllWhiteSpace(
const char *src, /* First character to parse. */
- size_t numBytes, /* Max number of byes to scan */
+ Tcl_Size numBytes, /* Max number of byes to scan */
int *incompletePtr) /* Set true if parse is incomplete. */
{
char type;
const char *p = src;
do {
- size_t scanned = ParseWhiteSpace(p, numBytes, incompletePtr, &type);
+ Tcl_Size scanned = ParseWhiteSpace(p, numBytes, incompletePtr, &type);
p += scanned;
numBytes -= scanned;
@@ -693,10 +693,10 @@ ParseAllWhiteSpace(
return (p-src);
}
-size_t
+Tcl_Size
TclParseAllWhiteSpace(
const char *src, /* First character to parse. */
- size_t numBytes) /* Max number of byes to scan */
+ Tcl_Size numBytes) /* Max number of byes to scan */
{
int dummy;
return ParseAllWhiteSpace(src, numBytes, &dummy);
@@ -727,7 +727,7 @@ TclParseAllWhiteSpace(
int
ParseHex(
const char *src, /* First character to parse. */
- size_t numBytes, /* Max number of byes to scan */
+ Tcl_Size numBytes, /* Max number of byes to scan */
int *resultPtr) /* Points to storage provided by caller where
* the character resulting from the
* conversion is to be written. */
@@ -783,8 +783,8 @@ int
TclParseBackslash(
const char *src, /* Points to the backslash character of a a
* backslash sequence. */
- size_t numBytes, /* Max number of bytes to scan. */
- size_t *readPtr, /* NULL, or points to storage where the number
+ Tcl_Size numBytes, /* Max number of bytes to scan. */
+ Tcl_Size *readPtr, /* NULL, or points to storage where the number
* of bytes scanned should be written. */
char *dst) /* NULL, or points to buffer where the UTF-8
* encoding of the backslash sequence is to be
@@ -793,7 +793,7 @@ TclParseBackslash(
const char *p = src+1;
int unichar;
int result;
- size_t count;
+ Tcl_Size count;
char buf[4] = "";
if (numBytes == 0) {
@@ -981,10 +981,10 @@ TclParseBackslash(
*----------------------------------------------------------------------
*/
-static size_t
+static Tcl_Size
ParseComment(
const char *src, /* First character to parse. */
- size_t numBytes, /* Max number of bytes to scan. */
+ Tcl_Size numBytes, /* Max number of bytes to scan. */
Tcl_Parse *parsePtr) /* Information about parse in progress.
* Updated if parsing indicates an incomplete
* command. */
@@ -993,7 +993,7 @@ ParseComment(
int incomplete = parsePtr->incomplete;
while (numBytes) {
- size_t scanned = ParseAllWhiteSpace(p, numBytes, &incomplete);
+ Tcl_Size scanned = ParseAllWhiteSpace(p, numBytes, &incomplete);
p += scanned;
numBytes -= scanned;
@@ -1057,7 +1057,7 @@ ParseComment(
static int
ParseTokens(
const char *src, /* First character to parse. */
- size_t numBytes, /* Max number of bytes to scan. */
+ Tcl_Size numBytes, /* Max number of bytes to scan. */
int mask, /* Specifies when to stop parsing. The parse
* stops at the first unquoted character whose
* CHAR_TYPE contains any of the bits in
@@ -1179,7 +1179,7 @@ ParseTokens(
if (numBytes == 0) {
if (parsePtr->interp != NULL) {
Tcl_SetObjResult(parsePtr->interp, Tcl_NewStringObj(
- "missing close-bracket", TCL_INDEX_NONE));
+ "missing close-bracket", -1));
}
parsePtr->errorType = TCL_PARSE_MISSING_BRACKET;
parsePtr->term = tokenPtr->start;
@@ -1335,7 +1335,7 @@ Tcl_ParseVarName(
* NULL, then no error message is provided. */
const char *start, /* Start of variable substitution string.
* First character must be "$". */
- size_t numBytes, /* Total number of bytes in string. If -1,
+ Tcl_Size numBytes, /* Total number of bytes in string. If -1,
* the string consists of all bytes up to the
* first null character. */
Tcl_Parse *parsePtr, /* Structure to fill in with information about
@@ -1350,7 +1350,7 @@ Tcl_ParseVarName(
int varIndex;
unsigned array;
- if (numBytes == TCL_INDEX_NONE && start) {
+ if (numBytes < 0 && start) {
numBytes = strlen(start);
}
if (!append) {
@@ -1425,7 +1425,7 @@ Tcl_ParseVarName(
if (numBytes == 0) {
if (parsePtr->interp != NULL) {
Tcl_SetObjResult(parsePtr->interp, Tcl_NewStringObj(
- "missing close-brace for variable name", TCL_INDEX_NONE));
+ "missing close-brace for variable name", -1));
}
parsePtr->errorType = TCL_PARSE_MISSING_VAR_BRACE;
parsePtr->term = tokenPtr->start-1;
@@ -1483,7 +1483,7 @@ Tcl_ParseVarName(
if (parsePtr->term == src+numBytes){
if (parsePtr->interp != NULL) {
Tcl_SetObjResult(parsePtr->interp, Tcl_NewStringObj(
- "missing )", TCL_INDEX_NONE));
+ "missing )", -1));
}
parsePtr->errorType = TCL_PARSE_MISSING_PAREN;
parsePtr->term = src;
@@ -1492,7 +1492,7 @@ Tcl_ParseVarName(
} else if ((*parsePtr->term != ')')){
if (parsePtr->interp != NULL) {
Tcl_SetObjResult(parsePtr->interp, Tcl_NewStringObj(
- "invalid character in array index", TCL_INDEX_NONE));
+ "invalid character in array index", -1));
}
parsePtr->errorType = TCL_PARSE_SYNTAX;
parsePtr->term = src;
@@ -1633,7 +1633,7 @@ Tcl_ParseBraces(
* NULL, then no error message is provided. */
const char *start, /* Start of string enclosed in braces. The
* first character must be {'. */
- size_t numBytes, /* Total number of bytes in string. If -1,
+ Tcl_Size numBytes, /* Total number of bytes in string. If -1,
* the string consists of all bytes up to the
* first null character. */
Tcl_Parse *parsePtr,
@@ -1651,9 +1651,9 @@ Tcl_ParseBraces(
Tcl_Token *tokenPtr;
const char *src;
int startIndex, level;
- size_t length;
+ Tcl_Size length;
- if (numBytes == TCL_INDEX_NONE && start) {
+ if (numBytes < 0 && start) {
numBytes = strlen(start);
}
if (!append) {
@@ -1765,7 +1765,7 @@ Tcl_ParseBraces(
}
Tcl_SetObjResult(parsePtr->interp, Tcl_NewStringObj(
- "missing close-brace", TCL_INDEX_NONE));
+ "missing close-brace", -1));
/*
* Guess if the problem is due to comments by searching the source string
@@ -1788,7 +1788,7 @@ Tcl_ParseBraces(
case '#' :
if (openBrace && TclIsSpaceProcM(src[-1])) {
Tcl_AppendToObj(Tcl_GetObjResult(parsePtr->interp),
- ": possible unbalanced brace in comment", TCL_INDEX_NONE);
+ ": possible unbalanced brace in comment", -1);
goto error;
}
break;
@@ -1835,7 +1835,7 @@ Tcl_ParseQuotedString(
* NULL, then no error message is provided. */
const char *start, /* Start of the quoted string. The first
* character must be '"'. */
- size_t numBytes, /* Total number of bytes in string. If -1,
+ Tcl_Size numBytes, /* Total number of bytes in string. If -1,
* the string consists of all bytes up to the
* first null character. */
Tcl_Parse *parsePtr,
@@ -1850,7 +1850,7 @@ Tcl_ParseQuotedString(
* the quoted string's terminating close-quote
* if the parse succeeds. */
{
- if (numBytes == TCL_INDEX_NONE && start) {
+ if (numBytes < 0 && start) {
numBytes = strlen(start);
}
if (!append) {
@@ -1867,7 +1867,7 @@ Tcl_ParseQuotedString(
if (*parsePtr->term != '"') {
if (parsePtr->interp != NULL) {
Tcl_SetObjResult(parsePtr->interp, Tcl_NewStringObj(
- "missing \"", TCL_INDEX_NONE));
+ "missing \"", -1));
}
parsePtr->errorType = TCL_PARSE_MISSING_QUOTE;
parsePtr->term = start;
@@ -1916,12 +1916,12 @@ void
TclSubstParse(
Tcl_Interp *interp,
const char *bytes,
- size_t numBytes,
+ Tcl_Size numBytes,
int flags,
Tcl_Parse *parsePtr,
Tcl_InterpState *statePtr)
{
- size_t length = numBytes;
+ Tcl_Size length = numBytes;
const char *p = bytes;
TclParseInit(interp, p, length, parsePtr);
@@ -2115,12 +2115,12 @@ TclSubstTokens(
* errors. */
Tcl_Token *tokenPtr, /* Pointer to first in an array of tokens to
* evaluate and concatenate. */
- size_t count, /* Number of tokens to consider at tokenPtr.
+ Tcl_Size count, /* Number of tokens to consider at tokenPtr.
* Must be at least 1. */
int *tokensLeftPtr, /* If not NULL, points to memory where an
* integer representing the number of tokens
* left to be substituted will be written */
- size_t line, /* The line the script starts on. */
+ Tcl_Size line, /* The line the script starts on. */
int *clNextOuter, /* Information about an outer context for */
const char *outerScript) /* continuation line data. This is set by
* EvalEx() to properly handle [...]-nested
@@ -2143,7 +2143,7 @@ TclSubstTokens(
int code = TCL_OK;
#define NUM_STATIC_POS 20
int isLiteral;
- size_t i, maxNumCL, numCL, adjust;
+ Tcl_Size i, maxNumCL, numCL, adjust;
int *clPosition = NULL;
Interp *iPtr = (Interp *) interp;
int inFile = iPtr->evalFlags & TCL_EVAL_FILE;
@@ -2219,7 +2219,7 @@ TclSubstTokens(
if ((appendByteLength == 1) && (utfCharBytes[0] == ' ')
&& (tokenPtr->start[1] == '\n')) {
if (isLiteral) {
- size_t clPos;
+ Tcl_Size clPos;
if (result == 0) {
clPos = 0;
@@ -2248,7 +2248,7 @@ TclSubstTokens(
* Test cases: info-30.{6,8,9}
*/
- size_t theline;
+ Tcl_Size theline;
TclAdvanceContinuations(&line, &clNextOuter,
tokenPtr->start - outerScript);
@@ -2425,7 +2425,7 @@ TclSubstTokens(
static int
CommandComplete(
const char *script, /* Script to check. */
- size_t numBytes) /* Number of bytes in script. */
+ Tcl_Size numBytes) /* Number of bytes in script. */
{
Tcl_Parse parse;
const char *p, *end;
@@ -2499,7 +2499,7 @@ TclObjCommandComplete(
Tcl_Obj *objPtr) /* Points to object holding script to
* check. */
{
- size_t length;
+ Tcl_Size length;
const char *script = Tcl_GetStringFromObj(objPtr, &length);
return CommandComplete(script, length);
diff --git a/generic/tclPathObj.c b/generic/tclPathObj.c
index bb66350..df6f04b 100644
--- a/generic/tclPathObj.c
+++ b/generic/tclPathObj.c
@@ -477,7 +477,7 @@ Tcl_PathType
TclFSGetPathType(
Tcl_Obj *pathPtr,
const Tcl_Filesystem **filesystemPtrPtr,
- size_t *driveNameLengthPtr)
+ Tcl_Size *driveNameLengthPtr)
{
FsPath *fsPathPtr;
@@ -667,7 +667,7 @@ TclPathPart(
goto standardPath;
}
} else {
- size_t splitElements;
+ Tcl_Size splitElements;
Tcl_Obj *splitPtr, *resultPtr;
standardPath:
@@ -751,7 +751,7 @@ GetExtension(
if (extension == NULL) {
TclNewObj(ret);
} else {
- ret = Tcl_NewStringObj(extension, TCL_INDEX_NONE);
+ ret = Tcl_NewStringObj(extension, -1);
}
Tcl_IncrRefCount(ret);
return ret;
@@ -795,17 +795,17 @@ Tcl_Obj *
Tcl_FSJoinPath(
Tcl_Obj *listObj, /* Path elements to join, may have a zero
* reference count. */
- size_t elements) /* Number of elements to use (-1 = all) */
+ Tcl_Size elements) /* Number of elements to use (-1 = all) */
{
Tcl_Obj *res;
- size_t objc;
+ Tcl_Size objc;
Tcl_Obj **objv;
if (TclListObjLengthM(NULL, listObj, &objc) != TCL_OK) {
return NULL;
}
- elements = ((elements != TCL_INDEX_NONE) && (elements <= objc)) ? elements : objc;
+ elements = ((elements >= 0) && (elements <= objc)) ? elements : objc;
TclListObjGetElementsM(NULL, listObj, &objc, &objv);
res = TclJoinPath(elements, objv, 0);
return res;
@@ -923,8 +923,8 @@ TclJoinPath(
assert ( res == NULL );
for (i = 0; i < elements; i++) {
- size_t driveNameLength;
- size_t strEltLen, length;
+ Tcl_Size driveNameLength;
+ Tcl_Size strEltLen, length;
Tcl_PathType type;
char *strElt, *ptr;
Tcl_Obj *driveName = NULL;
@@ -2621,8 +2621,8 @@ TclResolveTildePathList(
Tcl_Obj *pathsObj)
{
Tcl_Obj **objv;
- size_t objc;
- size_t i;
+ Tcl_Size objc;
+ Tcl_Size i;
Tcl_Obj *resolvedPaths;
const char *path;
diff --git a/generic/tclPipe.c b/generic/tclPipe.c
index b18b789..267d8dc 100644
--- a/generic/tclPipe.c
+++ b/generic/tclPipe.c
@@ -179,12 +179,12 @@ FileForRedirect(
void
Tcl_DetachPids(
- size_t numPids, /* Number of pids to detach: gives size of
+ Tcl_Size numPids, /* Number of pids to detach: gives size of
* array pointed to by pidPtr. */
Tcl_Pid *pidPtr) /* Array of pids to detach. */
{
Detached *detPtr;
- size_t i;
+ Tcl_Size i;
Tcl_MutexLock(&pipeMutex);
for (i = 0; i < numPids; i++) {
@@ -269,7 +269,7 @@ Tcl_ReapDetachedProcs(void)
int
TclCleanupChildren(
Tcl_Interp *interp, /* Used for error messages. */
- size_t numPids, /* Number of entries in pidPtr array. */
+ Tcl_Size numPids, /* Number of entries in pidPtr array. */
Tcl_Pid *pidPtr, /* Array of process ids of children. */
Tcl_Channel errorChan) /* Channel for file containing stderr output
* from pipeline. NULL means there isn't any
@@ -278,7 +278,7 @@ TclCleanupChildren(
int result = TCL_OK;
int code, abnormalExit, anyErrorInfo;
TclProcessWaitStatus waitStatus;
- size_t i;
+ Tcl_Size i;
Tcl_Obj *msg, *error;
abnormalExit = 0;
@@ -361,7 +361,7 @@ TclCleanupChildren(
if ((abnormalExit != 0) && (anyErrorInfo == 0) && (interp != NULL)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "child process exited abnormally", TCL_INDEX_NONE));
+ "child process exited abnormally", -1));
}
return result;
}
@@ -395,10 +395,10 @@ TclCleanupChildren(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
TclCreatePipeline(
Tcl_Interp *interp, /* Interpreter to use for error reporting. */
- size_t argc, /* Number of entries in argv. */
+ Tcl_Size argc, /* Number of entries in argv. */
const char **argv, /* Array of strings describing commands in
* pipeline plus I/O redirection with <, <<,
* >, etc. Argv[argc] must be NULL. */
@@ -431,9 +431,9 @@ TclCreatePipeline(
{
Tcl_Pid *pidPtr = NULL; /* Points to malloc-ed array holding all the
* pids of child processes. */
- size_t numPids; /* Actual number of processes that exist at
+ Tcl_Size numPids; /* Actual number of processes that exist at
* *pidPtr right now. */
- size_t cmdCount; /* Count of number of distinct commands found
+ Tcl_Size cmdCount; /* Count of number of distinct commands found
* in argc/argv. */
const char *inputLiteral = NULL;
/* If non-null, then this points to a string
@@ -461,7 +461,7 @@ TclCreatePipeline(
const char *p;
const char *nextArg;
int skip, atOK, flags, needCmd, errorToOutput = 0;
- size_t i, j, lastArg, lastBar;
+ Tcl_Size i, j, lastArg, lastBar;
Tcl_DString execBuffer;
TclFile pipeIn;
TclFile curInFile, curOutFile, curErrFile;
@@ -497,7 +497,7 @@ TclCreatePipeline(
* list.
*/
- lastBar = TCL_INDEX_NONE;
+ lastBar = -1;
cmdCount = 1;
needCmd = 1;
for (i = 0; i < argc; i++) {
@@ -512,7 +512,7 @@ TclCreatePipeline(
if (*p == '\0') {
if ((i == (lastBar + 1)) || (i == (argc - 1))) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "illegal use of | or |& in command", TCL_INDEX_NONE));
+ "illegal use of | or |& in command", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "EXEC",
"PIPESYNTAX", NULL);
goto error;
@@ -700,7 +700,7 @@ TclCreatePipeline(
*/
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "illegal use of | or |& in command", TCL_INDEX_NONE));
+ "illegal use of | or |& in command", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "EXEC", "PIPESYNTAX",
NULL);
goto error;
@@ -1021,14 +1021,14 @@ Tcl_Channel
Tcl_OpenCommandChannel(
Tcl_Interp *interp, /* Interpreter for error reporting. Can NOT be
* NULL. */
- size_t argc, /* How many arguments. */
+ Tcl_Size argc, /* How many arguments. */
const char **argv, /* Array of arguments for command pipe. */
int flags) /* Or'ed combination of TCL_STDIN, TCL_STDOUT,
* TCL_STDERR, and TCL_ENFORCE_MODE. */
{
TclFile *inPipePtr, *outPipePtr, *errFilePtr;
TclFile inPipe, outPipe, errFile;
- size_t numPids;
+ Tcl_Size numPids;
Tcl_Pid *pidPtr = NULL;
Tcl_Channel channel;
@@ -1041,7 +1041,7 @@ Tcl_OpenCommandChannel(
numPids = TclCreatePipeline(interp, argc, argv, &pidPtr, inPipePtr,
outPipePtr, errFilePtr);
- if (numPids == TCL_INDEX_NONE) {
+ if (numPids < 0) {
goto error;
}
@@ -1054,7 +1054,7 @@ Tcl_OpenCommandChannel(
if ((flags & TCL_STDOUT) && (outPipe == NULL)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"can't read output from command:"
- " standard output was redirected", TCL_INDEX_NONE));
+ " standard output was redirected", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "EXEC",
"BADREDIRECT", NULL);
goto error;
@@ -1062,7 +1062,7 @@ Tcl_OpenCommandChannel(
if ((flags & TCL_STDIN) && (inPipe == NULL)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"can't write input to command:"
- " standard input was redirected", TCL_INDEX_NONE));
+ " standard input was redirected", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "EXEC",
"BADREDIRECT", NULL);
goto error;
@@ -1074,7 +1074,7 @@ Tcl_OpenCommandChannel(
if (channel == NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "pipe for command could not be created", TCL_INDEX_NONE));
+ "pipe for command could not be created", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "EXEC", "NOPIPE", NULL);
goto error;
}
diff --git a/generic/tclPkg.c b/generic/tclPkg.c
index 989f133..88cdeaf 100644
--- a/generic/tclPkg.c
+++ b/generic/tclPkg.c
@@ -165,7 +165,7 @@ Tcl_PkgProvideEx(
pkgPtr = FindPackage(interp, name);
if (pkgPtr->version == NULL) {
- pkgPtr->version = Tcl_NewStringObj(version, TCL_INDEX_NONE);
+ pkgPtr->version = Tcl_NewStringObj(version, -1);
Tcl_IncrRefCount(pkgPtr->version);
pkgPtr->clientData = clientData;
return TCL_OK;
@@ -291,7 +291,7 @@ TclPkgFileSeen(
} else {
list = (Tcl_Obj *)Tcl_GetHashValue(entry);
}
- Tcl_ListObjAppendElement(interp, list, Tcl_NewStringObj(fileName, TCL_INDEX_NONE));
+ Tcl_ListObjAppendElement(interp, list, Tcl_NewStringObj(fileName, -1));
}
}
@@ -407,7 +407,7 @@ Tcl_PkgRequireEx(
!= CheckVersionAndConvert(interp, version, NULL, NULL)) {
return NULL;
}
- ov = Tcl_NewStringObj(version, TCL_INDEX_NONE);
+ ov = Tcl_NewStringObj(version, -1);
if (exact) {
Tcl_AppendStringsToObj(ov, "-", version, NULL);
}
@@ -426,7 +426,7 @@ Tcl_PkgRequireProc(
Tcl_Interp *interp, /* Interpreter in which package is now
* available. */
const char *name, /* Name of desired package. */
- size_t reqc, /* Requirements constraining the desired
+ Tcl_Size reqc, /* Requirements constraining the desired
* version. */
Tcl_Obj *const reqv[], /* 0 means to use the latest version
* available. */
@@ -531,7 +531,7 @@ PkgRequireCoreStep1(
*/
Tcl_DStringInit(&command);
- Tcl_DStringAppend(&command, script, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&command, script, -1);
Tcl_DStringAppendElement(&command, name);
AddRequirementsToDString(&command, reqc, reqv);
@@ -839,7 +839,7 @@ SelectPackage(
Tcl_NRAddCallback(interp,
SelectPackageFinal, reqPtr, INT2PTR(reqc), (void *)reqv,
data[3]);
- Tcl_NREvalObj(interp, Tcl_NewStringObj(bestPtr->script, TCL_INDEX_NONE),
+ Tcl_NREvalObj(interp, Tcl_NewStringObj(bestPtr->script, -1),
TCL_EVAL_GLOBAL);
}
return TCL_OK;
@@ -1080,7 +1080,7 @@ TclNRPackageObjCmd(
} optionIndex;
Interp *iPtr = (Interp *) interp;
int exact, satisfies;
- size_t i, newobjc;
+ Tcl_Size i, newobjc;
PkgAvail *availPtr, *prevPtr;
Package *pkgPtr;
Tcl_HashEntry *hPtr;
@@ -1124,7 +1124,7 @@ TclNRPackageObjCmd(
PkgFiles *pkgFiles = (PkgFiles *)
Tcl_GetAssocData(interp, "tclPkgFiles", NULL);
- for (i = 2; i < (size_t)objc; i++) {
+ for (i = 2; i < objc; i++) {
keyString = TclGetString(objv[i]);
if (pkgFiles) {
hPtr = Tcl_FindHashEntry(&pkgFiles->table, keyString);
@@ -1200,7 +1200,7 @@ TclNRPackageObjCmd(
if (objc == 4) {
Tcl_Free(argv3i);
Tcl_SetObjResult(interp,
- Tcl_NewStringObj(availPtr->script, TCL_INDEX_NONE));
+ Tcl_NewStringObj(availPtr->script, -1));
return TCL_OK;
}
Tcl_EventuallyFree(availPtr->script, TCL_DYNAMIC);
@@ -1251,7 +1251,7 @@ TclNRPackageObjCmd(
pkgPtr = (Package *)Tcl_GetHashValue(hPtr);
if ((pkgPtr->version != NULL) || (pkgPtr->availPtr != NULL)) {
Tcl_ListObjAppendElement(NULL,resultObj, Tcl_NewStringObj(
- (char *)Tcl_GetHashKey(tablePtr, hPtr), TCL_INDEX_NONE));
+ (char *)Tcl_GetHashKey(tablePtr, hPtr), -1));
}
}
Tcl_SetObjResult(interp, resultObj);
@@ -1353,7 +1353,7 @@ TclNRPackageObjCmd(
* Create a new-style requirement for the exact version.
*/
- ov = Tcl_NewStringObj(version, TCL_INDEX_NONE);
+ ov = Tcl_NewStringObj(version, -1);
Tcl_AppendStringsToObj(ov, "-", version, NULL);
version = NULL;
argv3 = TclGetString(objv[3]);
@@ -1404,7 +1404,7 @@ TclNRPackageObjCmd(
if (objc == 2) {
if (iPtr->packageUnknown != NULL) {
Tcl_SetObjResult(interp,
- Tcl_NewStringObj(iPtr->packageUnknown, TCL_INDEX_NONE));
+ Tcl_NewStringObj(iPtr->packageUnknown, -1));
}
} else if (objc == 3) {
if (iPtr->packageUnknown != NULL) {
@@ -1456,7 +1456,7 @@ TclNRPackageObjCmd(
*/
Tcl_SetObjResult(interp,
- Tcl_NewStringObj(pkgPreferOptions[iPtr->packagePrefer], TCL_INDEX_NONE));
+ Tcl_NewStringObj(pkgPreferOptions[iPtr->packagePrefer], -1));
break;
}
case PKG_VCOMPARE:
@@ -1503,7 +1503,7 @@ TclNRPackageObjCmd(
for (availPtr = pkgPtr->availPtr; availPtr != NULL;
availPtr = availPtr->nextPtr) {
Tcl_ListObjAppendElement(NULL, resultObj,
- Tcl_NewStringObj(availPtr->version, TCL_INDEX_NONE));
+ Tcl_NewStringObj(availPtr->version, -1));
}
}
Tcl_SetObjResult(interp, resultObj);
diff --git a/generic/tclProc.c b/generic/tclProc.c
index a472a2d..d12394c 100644
--- a/generic/tclProc.c
+++ b/generic/tclProc.c
@@ -524,9 +524,9 @@ TclCreateProc(
}
if (fieldCount > 2) {
Tcl_Obj *errorObj = Tcl_NewStringObj(
- "too many fields in argument specifier \"", TCL_INDEX_NONE);
+ "too many fields in argument specifier \"", -1);
Tcl_AppendObjToObj(errorObj, argArray[i]);
- Tcl_AppendToObj(errorObj, "\"", TCL_INDEX_NONE);
+ Tcl_AppendToObj(errorObj, "\"", -1);
Tcl_SetObjResult(interp, errorObj);
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "PROC",
"FORMALARGUMENTFORMAT", NULL);
@@ -534,7 +534,7 @@ TclCreateProc(
}
if ((fieldCount == 0) || (Tcl_GetCharLength(fieldValues[0]) == 0)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "argument with no name", TCL_INDEX_NONE));
+ "argument with no name", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "PROC",
"FORMALARGUMENTFORMAT", NULL);
goto procError;
@@ -560,9 +560,9 @@ TclCreateProc(
}
} else if (*argnamei == ':' && *(argnamei+1) == ':') {
Tcl_Obj *errorObj = Tcl_NewStringObj(
- "formal parameter \"", TCL_INDEX_NONE);
+ "formal parameter \"", -1);
Tcl_AppendObjToObj(errorObj, fieldValues[0]);
- Tcl_AppendToObj(errorObj, "\" is not a simple name", TCL_INDEX_NONE);
+ Tcl_AppendToObj(errorObj, "\" is not a simple name", -1);
Tcl_SetObjResult(interp, errorObj);
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "PROC",
"FORMALARGUMENTFORMAT", NULL);
@@ -613,7 +613,7 @@ TclCreateProc(
"procedure \"%s\": formal parameter \"", procName);
Tcl_AppendObjToObj(errorObj, fieldValues[0]);
Tcl_AppendToObj(errorObj, "\" has "
- "default value inconsistent with precompiled body", TCL_INDEX_NONE);
+ "default value inconsistent with precompiled body", -1);
Tcl_SetObjResult(interp, errorObj);
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "PROC",
"BYTECODELIES", NULL);
@@ -1080,7 +1080,7 @@ ProcWrongNumArgs(
sizeof(Tcl_Obj *) * (numArgs+1));
if (framePtr->isProcCallFrame & FRAME_IS_LAMBDA) {
- desiredObjs[0] = Tcl_NewStringObj("lambdaExpr", TCL_INDEX_NONE);
+ desiredObjs[0] = Tcl_NewStringObj("lambdaExpr", -1);
} else {
desiredObjs[0] = framePtr->objv[skip-1];
}
@@ -1507,7 +1507,7 @@ TclPushProcCallFrame(
* interpreted. */
Tcl_Interp *interp,/* Interpreter in which procedure was
* invoked. */
- Tcl_Size objc, /* Count of number of arguments to this
+ Tcl_Size objc, /* Count of number of arguments to this
* procedure. */
Tcl_Obj *const objv[], /* Argument value objects. */
int isLambda) /* 1 if this is a call by ApplyObjCmd: it
@@ -1634,11 +1634,11 @@ TclNRInterpProc(
static int
NRInterpProc2(
- void *clientData, /* Record describing procedure to be
+ void *clientData, /* Record describing procedure to be
* interpreted. */
- Tcl_Interp *interp,/* Interpreter in which procedure was
+ Tcl_Interp *interp, /* Interpreter in which procedure was
* invoked. */
- size_t objc, /* Count of number of arguments to this
+ Tcl_Size objc, /* Count of number of arguments to this
* procedure. */
Tcl_Obj *const objv[]) /* Argument value objects. */
{
@@ -1653,11 +1653,11 @@ NRInterpProc2(
static int
ObjInterpProc2(
- void *clientData, /* Record describing procedure to be
+ void *clientData, /* Record describing procedure to be
* interpreted. */
- Tcl_Interp *interp,/* Interpreter in which procedure was
+ Tcl_Interp *interp, /* Interpreter in which procedure was
* invoked. */
- size_t objc, /* Count of number of arguments to this
+ Tcl_Size objc, /* Count of number of arguments to this
* procedure. */
Tcl_Obj *const objv[]) /* Argument value objects. */
{
@@ -1941,7 +1941,7 @@ TclProcCompileProc(
if (codePtr->flags & TCL_BYTECODE_PRECOMPILED) {
if ((Interp *) *codePtr->interpHandle != iPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "a precompiled script jumped interps", TCL_INDEX_NONE));
+ "a precompiled script jumped interps", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "PROC",
"CROSSINTERPBYTECODE", NULL);
return TCL_ERROR;
diff --git a/generic/tclProcess.c b/generic/tclProcess.c
index 0dad7c4..b621e31 100644
--- a/generic/tclProcess.c
+++ b/generic/tclProcess.c
@@ -233,9 +233,9 @@ WaitProcessStatus(
if (msgObjPtr) *msgObjPtr = Tcl_ObjPrintf(
"error waiting for process to exit: %s", msg);
if (errorObjPtr) {
- errorStrings[0] = Tcl_NewStringObj("POSIX", TCL_INDEX_NONE);
- errorStrings[1] = Tcl_NewStringObj(Tcl_ErrnoId(), TCL_INDEX_NONE);
- errorStrings[2] = Tcl_NewStringObj(msg, TCL_INDEX_NONE);
+ errorStrings[0] = Tcl_NewStringObj("POSIX", -1);
+ errorStrings[1] = Tcl_NewStringObj(Tcl_ErrnoId(), -1);
+ errorStrings[2] = Tcl_NewStringObj(msg, -1);
*errorObjPtr = Tcl_NewListObj(3, errorStrings);
}
return TCL_PROCESS_ERROR;
@@ -256,9 +256,9 @@ WaitProcessStatus(
*/
if (msgObjPtr) *msgObjPtr = Tcl_NewStringObj(
- "child process exited abnormally", TCL_INDEX_NONE);
+ "child process exited abnormally", -1);
if (errorObjPtr) {
- errorStrings[0] = Tcl_NewStringObj("CHILDSTATUS", TCL_INDEX_NONE);
+ errorStrings[0] = Tcl_NewStringObj("CHILDSTATUS", -1);
TclNewIntObj(errorStrings[1], resolvedPid);
TclNewIntObj(errorStrings[2], WEXITSTATUS(waitStatus));
*errorObjPtr = Tcl_NewListObj(3, errorStrings);
@@ -277,10 +277,10 @@ WaitProcessStatus(
if (msgObjPtr) *msgObjPtr = Tcl_ObjPrintf(
"child killed: %s", msg);
if (errorObjPtr) {
- errorStrings[0] = Tcl_NewStringObj("CHILDKILLED", TCL_INDEX_NONE);
+ errorStrings[0] = Tcl_NewStringObj("CHILDKILLED", -1);
TclNewIntObj(errorStrings[1], resolvedPid);
- errorStrings[2] = Tcl_NewStringObj(Tcl_SignalId(WTERMSIG(waitStatus)), TCL_INDEX_NONE);
- errorStrings[3] = Tcl_NewStringObj(msg, TCL_INDEX_NONE);
+ errorStrings[2] = Tcl_NewStringObj(Tcl_SignalId(WTERMSIG(waitStatus)), -1);
+ errorStrings[3] = Tcl_NewStringObj(msg, -1);
*errorObjPtr = Tcl_NewListObj(4, errorStrings);
}
return TCL_PROCESS_SIGNALED;
@@ -296,10 +296,10 @@ WaitProcessStatus(
if (msgObjPtr) *msgObjPtr = Tcl_ObjPrintf(
"child suspended: %s", msg);
if (errorObjPtr) {
- errorStrings[0] = Tcl_NewStringObj("CHILDSUSP", TCL_INDEX_NONE);
+ errorStrings[0] = Tcl_NewStringObj("CHILDSUSP", -1);
TclNewIntObj(errorStrings[1], resolvedPid);
- errorStrings[2] = Tcl_NewStringObj(Tcl_SignalId(WSTOPSIG(waitStatus)), TCL_INDEX_NONE);
- errorStrings[3] = Tcl_NewStringObj(msg, TCL_INDEX_NONE);
+ errorStrings[2] = Tcl_NewStringObj(Tcl_SignalId(WSTOPSIG(waitStatus)), -1);
+ errorStrings[3] = Tcl_NewStringObj(msg, -1);
*errorObjPtr = Tcl_NewListObj(4, errorStrings);
}
return TCL_PROCESS_STOPPED;
@@ -312,12 +312,12 @@ WaitProcessStatus(
if (codePtr) *codePtr = waitStatus;
if (msgObjPtr) *msgObjPtr = Tcl_NewStringObj(
- "child wait status didn't make sense\n", TCL_INDEX_NONE);
+ "child wait status didn't make sense\n", -1);
if (errorObjPtr) {
- errorStrings[0] = Tcl_NewStringObj("TCL", TCL_INDEX_NONE);
- errorStrings[1] = Tcl_NewStringObj("OPERATION", TCL_INDEX_NONE);
- errorStrings[2] = Tcl_NewStringObj("EXEC", TCL_INDEX_NONE);
- errorStrings[3] = Tcl_NewStringObj("ODDWAITRESULT", TCL_INDEX_NONE);
+ errorStrings[0] = Tcl_NewStringObj("TCL", -1);
+ errorStrings[1] = Tcl_NewStringObj("OPERATION", -1);
+ errorStrings[2] = Tcl_NewStringObj("EXEC", -1);
+ errorStrings[3] = Tcl_NewStringObj("ODDWAITRESULT", -1);
TclNewIntObj(errorStrings[4], resolvedPid);
*errorObjPtr = Tcl_NewListObj(5, errorStrings);
}
@@ -455,7 +455,7 @@ ProcessStatusObjCmd(
Tcl_HashEntry *entry;
Tcl_HashSearch search;
ProcessInfo *info;
- size_t i, numPids;
+ Tcl_Size i, numPids;
Tcl_Obj **pidObjs;
int result;
int pid;
@@ -600,7 +600,7 @@ ProcessPurgeObjCmd(
Tcl_HashEntry *entry;
Tcl_HashSearch search;
ProcessInfo *info;
- size_t i, numPids;
+ Tcl_Size i, numPids;
Tcl_Obj **pidObjs;
int result, pid;
diff --git a/generic/tclRegexp.c b/generic/tclRegexp.c
index 07beffd..5295747 100644
--- a/generic/tclRegexp.c
+++ b/generic/tclRegexp.c
@@ -253,7 +253,7 @@ void
Tcl_RegExpRange(
Tcl_RegExp re, /* Compiled regular expression that has been
* passed to Tcl_RegExpExec. */
- size_t index, /* 0 means give the range of the entire match,
+ Tcl_Size index, /* 0 means give the range of the entire match,
* > 0 means give the range of a matching
* subrange. */
const char **startPtr, /* Store address of first character in
@@ -264,9 +264,9 @@ Tcl_RegExpRange(
TclRegexp *regexpPtr = (TclRegexp *) re;
const char *string;
- if (index > regexpPtr->re.re_nsub) {
+ if (index < 0 || (size_t) index > regexpPtr->re.re_nsub) {
*startPtr = *endPtr = NULL;
- } else if (regexpPtr->matches[index].rm_so == TCL_INDEX_NONE) {
+ } else if (regexpPtr->matches[index].rm_so == (size_t) -1) {
*startPtr = *endPtr = NULL;
} else {
if (regexpPtr->objPtr) {
@@ -363,23 +363,23 @@ void
TclRegExpRangeUniChar(
Tcl_RegExp re, /* Compiled regular expression that has been
* passed to Tcl_RegExpExec. */
- size_t index, /* 0 means give the range of the entire match,
+ Tcl_Size index, /* 0 means give the range of the entire match,
* > 0 means give the range of a matching
- * subrange, TCL_INDEX_NONE means the range of the
+ * subrange, -1 means the range of the
* rm_extend field. */
- size_t *startPtr, /* Store address of first character in
+ Tcl_Size *startPtr, /* Store address of first character in
* (sub-)range here. */
- size_t *endPtr) /* Store address of character just after last
+ Tcl_Size *endPtr) /* Store address of character just after last
* in (sub-)range here. */
{
TclRegexp *regexpPtr = (TclRegexp *) re;
- if ((regexpPtr->flags&REG_EXPECT) && (index == TCL_INDEX_NONE)) {
+ if ((regexpPtr->flags&REG_EXPECT) && (index == -1)) {
*startPtr = regexpPtr->details.rm_extend.rm_so;
*endPtr = regexpPtr->details.rm_extend.rm_eo;
- } else if (index + 1 > regexpPtr->re.re_nsub + 1) {
- *startPtr = TCL_INDEX_NONE;
- *endPtr = TCL_INDEX_NONE;
+ } else if (index < 0 || (size_t) index > regexpPtr->re.re_nsub + 1) {
+ *startPtr = -1;
+ *endPtr = -1;
} else {
*startPtr = regexpPtr->matches[index].rm_so;
*endPtr = regexpPtr->matches[index].rm_eo;
@@ -443,16 +443,16 @@ Tcl_RegExpExecObj(
* returned by previous call to
* Tcl_GetRegExpFromObj. */
Tcl_Obj *textObj, /* Text against which to match re. */
- size_t offset, /* Character index that marks where matching
+ Tcl_Size offset, /* Character index that marks where matching
* should begin. */
- size_t nmatches, /* How many subexpression matches (counting
+ Tcl_Size nmatches, /* How many subexpression matches (counting
* the whole match as subexpression 0) are of
* interest. -1 means all of them. */
int flags) /* Regular expression execution flags. */
{
TclRegexp *regexpPtr = (TclRegexp *) re;
Tcl_UniChar *udata;
- size_t length;
+ Tcl_Size length;
int reflags = regexpPtr->flags;
#define TCL_REG_GLOBOK_FLAGS \
(TCL_REG_ADVANCED | TCL_REG_NOSUB | TCL_REG_NOCASE)
@@ -689,7 +689,7 @@ TclRegAbout(
for (inf=infonames ; inf->bit != 0 ; inf++) {
if (regexpPtr->re.re_info & inf->bit) {
Tcl_ListObjAppendElement(NULL, infoObj,
- Tcl_NewStringObj(inf->text, TCL_INDEX_NONE));
+ Tcl_NewStringObj(inf->text, -1));
}
}
Tcl_ListObjAppendElement(NULL, resultObj, infoObj);
diff --git a/generic/tclResult.c b/generic/tclResult.c
index 6a36fdf..ba97472 100644
--- a/generic/tclResult.c
+++ b/generic/tclResult.c
@@ -317,7 +317,7 @@ Tcl_AppendResult(
if (bytes == NULL) {
break;
}
- Tcl_AppendToObj(objPtr, bytes, TCL_INDEX_NONE);
+ Tcl_AppendToObj(objPtr, bytes, -1);
}
Tcl_SetObjResult(interp, objPtr);
va_end(argList);
@@ -354,7 +354,7 @@ Tcl_AppendElement(
* to result. */
{
Interp *iPtr = (Interp *) interp;
- Tcl_Obj *elementPtr = Tcl_NewStringObj(element, TCL_INDEX_NONE);
+ Tcl_Obj *elementPtr = Tcl_NewStringObj(element, -1);
Tcl_Obj *listPtr = Tcl_NewListObj(1, &elementPtr);
const char *bytes;
size_t length;
@@ -511,7 +511,7 @@ Tcl_SetErrorCode(
if (elem == NULL) {
break;
}
- Tcl_ListObjAppendElement(NULL, errorObj, Tcl_NewStringObj(elem, TCL_INDEX_NONE));
+ Tcl_ListObjAppendElement(NULL, errorObj, Tcl_NewStringObj(elem, -1));
}
Tcl_SetObjErrorCode(interp, errorObj);
va_end(argList);
@@ -733,7 +733,7 @@ TclProcessReturn(
Tcl_DictObjGet(NULL, iPtr->returnOpts, keys[KEY_ERRORSTACK],
&valuePtr);
if (valuePtr != NULL) {
- size_t len, valueObjc;
+ Tcl_Size len, valueObjc;
Tcl_Obj **valueObjv;
if (Tcl_IsShared(iPtr->errorStack)) {
@@ -910,7 +910,7 @@ TclMergeReturnOptions(
Tcl_DictObjGet(NULL, returnOpts, keys[KEY_ERRORCODE], &valuePtr);
if (valuePtr != NULL) {
- size_t length;
+ Tcl_Size length;
if (TCL_ERROR == TclListObjLengthM(NULL, valuePtr, &length )) {
/*
@@ -932,7 +932,7 @@ TclMergeReturnOptions(
Tcl_DictObjGet(NULL, returnOpts, keys[KEY_ERRORSTACK], &valuePtr);
if (valuePtr != NULL) {
- size_t length;
+ Tcl_Size length;
if (TCL_ERROR == TclListObjLengthM(NULL, valuePtr, &length)) {
/*
@@ -1100,7 +1100,7 @@ Tcl_SetReturnOptions(
Tcl_Interp *interp,
Tcl_Obj *options)
{
- size_t objc;
+ Tcl_Size objc;
int level, code;
Tcl_Obj **objv, *mergedOpts;
diff --git a/generic/tclScan.c b/generic/tclScan.c
index 6a5bfb7..ee18174 100644
--- a/generic/tclScan.c
+++ b/generic/tclScan.c
@@ -397,9 +397,9 @@ ValidateFormat(
invalidFieldSize:
buf[Tcl_UniCharToUtf(ch, buf)] = '\0';
errorMsg = Tcl_NewStringObj(
- "field size modifier may not be specified in %", TCL_INDEX_NONE);
- Tcl_AppendToObj(errorMsg, buf, TCL_INDEX_NONE);
- Tcl_AppendToObj(errorMsg, " conversion", TCL_INDEX_NONE);
+ "field size modifier may not be specified in %", -1);
+ Tcl_AppendToObj(errorMsg, buf, -1);
+ Tcl_AppendToObj(errorMsg, " conversion", -1);
Tcl_SetObjResult(interp, errorMsg);
Tcl_SetErrorCode(interp, "TCL", "FORMAT", "BADSIZE", NULL);
goto error;
@@ -452,15 +452,15 @@ ValidateFormat(
break;
badSet:
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "unmatched [ in format string", TCL_INDEX_NONE));
+ "unmatched [ in format string", -1));
Tcl_SetErrorCode(interp, "TCL", "FORMAT", "BRACKET", NULL);
goto error;
default:
buf[Tcl_UniCharToUtf(ch, buf)] = '\0';
errorMsg = Tcl_NewStringObj(
- "bad scan conversion character \"", TCL_INDEX_NONE);
- Tcl_AppendToObj(errorMsg, buf, TCL_INDEX_NONE);
- Tcl_AppendToObj(errorMsg, "\"", TCL_INDEX_NONE);
+ "bad scan conversion character \"", -1);
+ Tcl_AppendToObj(errorMsg, buf, -1);
+ Tcl_AppendToObj(errorMsg, "\"", -1);
Tcl_SetObjResult(interp, errorMsg);
Tcl_SetErrorCode(interp, "TCL", "FORMAT", "BADTYPE", NULL);
goto error;
@@ -531,7 +531,7 @@ ValidateFormat(
badIndex:
if (gotXpg) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "\"%n$\" argument index out of range", TCL_INDEX_NONE));
+ "\"%n$\" argument index out of range", -1));
Tcl_SetErrorCode(interp, "TCL", "FORMAT", "INDEXRANGE", NULL);
} else {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
@@ -926,7 +926,7 @@ Tcl_ScanObjCmd(
mp_int big;
if (mp_init_u64(&big, (Tcl_WideUInt)wideValue) != MP_OKAY) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "insufficient memory to create bignum", TCL_INDEX_NONE));
+ "insufficient memory to create bignum", -1));
Tcl_SetErrorCode(interp, "TCL", "MEMORY", NULL);
return TCL_ERROR;
} else {
@@ -953,7 +953,7 @@ Tcl_ScanObjCmd(
}
Tcl_DecrRefCount(objPtr);
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "unsigned bignum scans are invalid", TCL_INDEX_NONE));
+ "unsigned bignum scans are invalid", -1));
Tcl_SetErrorCode(interp, "TCL", "FORMAT",
"BADUNSIGNED",NULL);
return TCL_ERROR;
@@ -972,7 +972,7 @@ Tcl_ScanObjCmd(
mp_int big;
if (mp_init_u64(&big, (unsigned long)value) != MP_OKAY) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "insufficient memory to create bignum", TCL_INDEX_NONE));
+ "insufficient memory to create bignum", -1));
Tcl_SetErrorCode(interp, "TCL", "MEMORY", NULL);
return TCL_ERROR;
} else {
diff --git a/generic/tclStrToD.c b/generic/tclStrToD.c
index 2f29617..9e6f843 100644
--- a/generic/tclStrToD.c
+++ b/generic/tclStrToD.c
@@ -484,7 +484,7 @@ TclParseNumber(
* ("integer", "boolean value", etc.). */
const char *bytes, /* Pointer to the start of the string to
* scan. */
- size_t numBytes, /* Maximum number of bytes to scan, see
+ Tcl_Size numBytes, /* Maximum number of bytes to scan, see
* above. */
const char **endPtrPtr, /* Place to store pointer to the character
* that terminated the scan. */
@@ -529,10 +529,10 @@ TclParseNumber(
* number. */
long exponent = 0; /* Exponent of a floating point number. */
const char *p; /* Pointer to next character to scan. */
- size_t len; /* Number of characters remaining after p. */
+ Tcl_Size len; /* Number of characters remaining after p. */
const char *acceptPoint; /* Pointer to position after last character in
* an acceptable number. */
- size_t acceptLen; /* Number of characters following that
+ Tcl_Size acceptLen; /* Number of characters following that
* point. */
int status = TCL_OK; /* Status to return to caller. */
char d = 0; /* Last hexadecimal digit scanned; initialized
@@ -556,7 +556,7 @@ TclParseNumber(
return TCL_ERROR;
}
if (TclHasInternalRep(objPtr, &tclListType.objType)) {
- size_t length;
+ Tcl_Size length;
/* A list can only be a (single) number if its length == 1 */
TclListObjLengthM(NULL, objPtr, &length);
if (length != 1) {
@@ -1523,7 +1523,7 @@ TclParseNumber(
expected);
Tcl_AppendLimitedToObj(msg, bytes, numBytes, 50, "");
- Tcl_AppendToObj(msg, "\"", TCL_INDEX_NONE);
+ Tcl_AppendToObj(msg, "\"", -1);
Tcl_SetObjResult(interp, msg);
Tcl_SetErrorCode(interp, "TCL", "VALUE", "NUMBER", NULL);
}
@@ -4787,7 +4787,7 @@ Tcl_InitBignumFromDouble(
if (interp != NULL) {
const char *s = "integer value too large to represent";
- Tcl_SetObjResult(interp, Tcl_NewStringObj(s, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(s, -1));
Tcl_SetErrorCode(interp, "ARITH", "IOVERFLOW", s, NULL);
}
return TCL_ERROR;
diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c
index 34b185d..a556019 100644
--- a/generic/tclStringObj.c
+++ b/generic/tclStringObj.c
@@ -45,28 +45,28 @@
static void AppendPrintfToObjVA(Tcl_Obj *objPtr,
const char *format, va_list argList);
static void AppendUnicodeToUnicodeRep(Tcl_Obj *objPtr,
- const Tcl_UniChar *unicode, size_t appendNumChars);
+ const Tcl_UniChar *unicode, Tcl_Size appendNumChars);
static void AppendUnicodeToUtfRep(Tcl_Obj *objPtr,
- const Tcl_UniChar *unicode, size_t numChars);
+ const Tcl_UniChar *unicode, Tcl_Size numChars);
static void AppendUtfToUnicodeRep(Tcl_Obj *objPtr,
- const char *bytes, size_t numBytes);
+ const char *bytes, Tcl_Size numBytes);
static void AppendUtfToUtfRep(Tcl_Obj *objPtr,
- const char *bytes, size_t numBytes);
+ const char *bytes, Tcl_Size numBytes);
static void DupStringInternalRep(Tcl_Obj *objPtr,
Tcl_Obj *copyPtr);
-static size_t ExtendStringRepWithUnicode(Tcl_Obj *objPtr,
- const Tcl_UniChar *unicode, size_t numChars);
+static Tcl_Size ExtendStringRepWithUnicode(Tcl_Obj *objPtr,
+ const Tcl_UniChar *unicode, Tcl_Size numChars);
static void ExtendUnicodeRepWithString(Tcl_Obj *objPtr,
- const char *bytes, size_t numBytes,
- size_t numAppendChars);
+ const char *bytes, Tcl_Size numBytes,
+ Tcl_Size numAppendChars);
static void FillUnicodeRep(Tcl_Obj *objPtr);
static void FreeStringInternalRep(Tcl_Obj *objPtr);
static void GrowStringBuffer(Tcl_Obj *objPtr, size_t needed, int flag);
static void GrowUnicodeBuffer(Tcl_Obj *objPtr, size_t needed);
static int SetStringFromAny(Tcl_Interp *interp, Tcl_Obj *objPtr);
static void SetUnicodeObj(Tcl_Obj *objPtr,
- const Tcl_UniChar *unicode, size_t numChars);
-static size_t UnicodeLength(const Tcl_UniChar *unicode);
+ const Tcl_UniChar *unicode, Tcl_Size numChars);
+static Tcl_Size UnicodeLength(const Tcl_UniChar *unicode);
static void UpdateStringOfString(Tcl_Obj *objPtr);
#if TCL_UTF_MAX > 3
@@ -257,7 +257,7 @@ Tcl_Obj *
Tcl_NewStringObj(
const char *bytes, /* Points to the first of the length bytes
* used to initialize the new object. */
- size_t length) /* The number of bytes to copy from "bytes"
+ Tcl_Size length) /* The number of bytes to copy from "bytes"
* when initializing the new object. If
* TCL_INDEX_NONE, use bytes up to the first NUL
* byte. */
@@ -269,13 +269,13 @@ Tcl_Obj *
Tcl_NewStringObj(
const char *bytes, /* Points to the first of the length bytes
* used to initialize the new object. */
- size_t length) /* The number of bytes to copy from "bytes"
+ Tcl_Size length) /* The number of bytes to copy from "bytes"
* when initializing the new object. If -1,
* use bytes up to the first NUL byte. */
{
Tcl_Obj *objPtr;
- if (length == TCL_INDEX_NONE) {
+ if (length < 0) {
length = (bytes? strlen(bytes) : 0);
}
TclNewStringObj(objPtr, bytes, length);
@@ -317,7 +317,7 @@ Tcl_Obj *
Tcl_DbNewStringObj(
const char *bytes, /* Points to the first of the length bytes
* used to initialize the new object. */
- size_t length, /* The number of bytes to copy from "bytes"
+ Tcl_Size length, /* The number of bytes to copy from "bytes"
* when initializing the new object. If -1,
* use bytes up to the first NUL byte. */
const char *file, /* The name of the source file calling this
@@ -339,7 +339,7 @@ Tcl_Obj *
Tcl_DbNewStringObj(
const char *bytes, /* Points to the first of the length bytes
* used to initialize the new object. */
- size_t length, /* The number of bytes to copy from "bytes"
+ Tcl_Size length, /* The number of bytes to copy from "bytes"
* when initializing the new object. If -1,
* use bytes up to the first NUL byte. */
TCL_UNUSED(const char *) /*file*/,
@@ -372,7 +372,7 @@ Tcl_Obj *
Tcl_NewUnicodeObj(
const Tcl_UniChar *unicode, /* The unicode string used to initialize the
* new object. */
- size_t numChars) /* Number of characters in the unicode
+ Tcl_Size numChars) /* Number of characters in the unicode
* string. */
{
Tcl_Obj *objPtr;
@@ -399,13 +399,13 @@ Tcl_NewUnicodeObj(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
Tcl_GetCharLength(
Tcl_Obj *objPtr) /* The String object to get the num chars
* of. */
{
String *stringPtr;
- size_t numChars = 0;
+ Tcl_Size numChars = 0;
/*
* Quick, no-shimmer return for short string reps.
@@ -444,19 +444,19 @@ Tcl_GetCharLength(
* If numChars is unknown, compute it.
*/
- if (numChars == TCL_INDEX_NONE) {
+ if (numChars < 0) {
TclNumUtfCharsM(numChars, objPtr->bytes, objPtr->length);
stringPtr->numChars = numChars;
}
return numChars;
}
-size_t
+Tcl_Size
TclGetCharLength(
Tcl_Obj *objPtr) /* The String object to get the num chars
* of. */
{
- size_t numChars = 0;
+ Tcl_Size numChars = 0;
/*
* Quick, no-shimmer return for short string reps.
@@ -509,7 +509,7 @@ int
TclCheckEmptyString(
Tcl_Obj *objPtr)
{
- size_t length = TCL_INDEX_NONE;
+ Tcl_Size length = TCL_INDEX_NONE;
if (objPtr->bytes == &tclEmptyString) {
return TCL_EMPTYSTRING_YES;
@@ -553,18 +553,22 @@ int
Tcl_GetUniChar(
Tcl_Obj *objPtr, /* The object to get the Unicode charater
* from. */
- size_t index) /* Get the index'th Unicode character. */
+ Tcl_Size index) /* Get the index'th Unicode character. */
{
String *stringPtr;
int ch;
+ if (index < 0) {
+ return -1;
+ }
+
/*
* Optimize the case where we're really dealing with a bytearray object
* we don't need to convert to a string to perform the indexing operation.
*/
if (TclIsPureByteArray(objPtr)) {
- size_t length = 0;
+ Tcl_Size length = 0;
unsigned char *bytes = Tcl_GetByteArrayFromObj(objPtr, &length);
if (index >= length) {
return -1;
@@ -622,17 +626,21 @@ int
TclGetUniChar(
Tcl_Obj *objPtr, /* The object to get the Unicode charater
* from. */
- size_t index) /* Get the index'th Unicode character. */
+ Tcl_Size index) /* Get the index'th Unicode character. */
{
int ch = 0;
+ if (index < 0) {
+ return -1;
+ }
+
/*
* Optimize the case where we're really dealing with a bytearray object
* we don't need to convert to a string to perform the indexing operation.
*/
if (TclIsPureByteArray(objPtr)) {
- size_t length = 0;
+ Tcl_Size length = 0;
unsigned char *bytes = Tcl_GetByteArrayFromObj(objPtr, &length);
if (index >= length) {
return -1;
@@ -641,7 +649,7 @@ TclGetUniChar(
return bytes[index];
}
- size_t numChars = TclNumUtfChars(objPtr->bytes, objPtr->length);
+ Tcl_Size numChars = TclNumUtfChars(objPtr->bytes, objPtr->length);
if (index >= numChars) {
return -1;
@@ -693,7 +701,7 @@ TclGetUnicodeFromObj(
if (lengthPtr != NULL) {
if (stringPtr->numChars > INT_MAX) {
Tcl_Panic("Tcl_GetUnicodeFromObj with 'int' lengthPtr"
- "cannot handle such long strings. Please use 'size_t'");
+ "cannot handle such long strings. Please use 'Tcl_Size'");
}
*lengthPtr = (int)stringPtr->numChars;
}
@@ -704,7 +712,7 @@ Tcl_UniChar *
Tcl_GetUnicodeFromObj(
Tcl_Obj *objPtr, /* The object to find the unicode string
* for. */
- size_t *lengthPtr) /* If non-NULL, the location where the string
+ Tcl_Size *lengthPtr) /* If non-NULL, the location where the string
* rep's unichar length should be stored. If
* NULL, no length is stored. */
{
@@ -747,14 +755,14 @@ Tcl_GetUnicodeFromObj(
Tcl_Obj *
Tcl_GetRange(
Tcl_Obj *objPtr, /* The Tcl object to find the range of. */
- size_t first, /* First index of the range. */
- size_t last) /* Last index of the range. */
+ Tcl_Size first, /* First index of the range. */
+ Tcl_Size last) /* Last index of the range. */
{
Tcl_Obj *newObjPtr; /* The Tcl object to find the range of. */
String *stringPtr;
- size_t length = 0;
+ Tcl_Size length = 0;
- if (first == TCL_INDEX_NONE) {
+ if (first < 0) {
first = TCL_INDEX_START;
}
@@ -766,10 +774,10 @@ Tcl_GetRange(
if (TclIsPureByteArray(objPtr)) {
unsigned char *bytes = Tcl_GetByteArrayFromObj(objPtr, &length);
- if (last >= length) {
+ if (last < 0 || last >= length) {
last = length - 1;
}
- if (last + 1 < first + 1) {
+ if (last < first) {
TclNewObj(newObjPtr);
return newObjPtr;
}
@@ -792,10 +800,10 @@ Tcl_GetRange(
TclNumUtfCharsM(stringPtr->numChars, objPtr->bytes, objPtr->length);
}
if (stringPtr->numChars == objPtr->length) {
- if (last >= stringPtr->numChars) {
+ if (last < 0 || last >= stringPtr->numChars) {
last = stringPtr->numChars - 1;
}
- if (last + 1 < first + 1) {
+ if (last < first) {
TclNewObj(newObjPtr);
return newObjPtr;
}
@@ -813,20 +821,20 @@ Tcl_GetRange(
FillUnicodeRep(objPtr);
stringPtr = GET_STRING(objPtr);
}
- if (last >= stringPtr->numChars) {
+ if (last < 0 || last >= stringPtr->numChars) {
last = stringPtr->numChars - 1;
}
- if (last + 1 < first + 1) {
+ if (last < first) {
TclNewObj(newObjPtr);
return newObjPtr;
}
#if TCL_UTF_MAX < 4
/* See: bug [11ae2be95dac9417] */
- if ((first + 1 > 1) && ((stringPtr->unicode[first] & 0xFC00) == 0xDC00)
+ if ((first > 0) && ((stringPtr->unicode[first] & 0xFC00) == 0xDC00)
&& ((stringPtr->unicode[first-1] & 0xFC00) == 0xD800)) {
++first;
}
- if ((last + 2 < stringPtr->numChars + 1)
+ if ((last + 1 < stringPtr->numChars)
&& ((stringPtr->unicode[last+1] & 0xFC00) == 0xDC00)
&& ((stringPtr->unicode[last] & 0xFC00) == 0xD800)) {
++last;
@@ -838,13 +846,13 @@ Tcl_GetRange(
Tcl_Obj *
TclGetRange(
Tcl_Obj *objPtr, /* The Tcl object to find the range of. */
- size_t first, /* First index of the range. */
- size_t last) /* Last index of the range. */
+ Tcl_Size first, /* First index of the range. */
+ Tcl_Size last) /* Last index of the range. */
{
Tcl_Obj *newObjPtr; /* The Tcl object to find the range of. */
- size_t length = 0;
+ Tcl_Size length = 0;
- if (first == TCL_INDEX_NONE) {
+ if (first < 0) {
first = TCL_INDEX_START;
}
@@ -856,22 +864,22 @@ TclGetRange(
if (TclIsPureByteArray(objPtr)) {
unsigned char *bytes = Tcl_GetByteArrayFromObj(objPtr, &length);
- if (last >= length) {
+ if (last < 0 || last >= length) {
last = length - 1;
}
- if (last + 1 < first + 1) {
+ if (last < first) {
TclNewObj(newObjPtr);
return newObjPtr;
}
return Tcl_NewByteArrayObj(bytes + first, last - first + 1);
}
- size_t numChars = TclNumUtfChars(objPtr->bytes, objPtr->length);
+ Tcl_Size numChars = TclNumUtfChars(objPtr->bytes, objPtr->length);
- if (last >= numChars) {
+ if (last < 0 || last >= numChars) {
last = numChars - 1;
}
- if (last + 1 < first + 1) {
+ if (last < first) {
TclNewObj(newObjPtr);
return newObjPtr;
}
@@ -906,7 +914,7 @@ Tcl_SetStringObj(
Tcl_Obj *objPtr, /* Object whose internal rep to init. */
const char *bytes, /* Points to the first of the length bytes
* used to initialize the object. */
- size_t length) /* The number of bytes to copy from "bytes"
+ Tcl_Size length) /* The number of bytes to copy from "bytes"
* when initializing the object. If -1,
* use bytes up to the first NUL byte.*/
{
@@ -959,12 +967,16 @@ void
Tcl_SetObjLength(
Tcl_Obj *objPtr, /* Pointer to object. This object must not
* currently be shared. */
- size_t length) /* Number of bytes desired for string
+ Tcl_Size length) /* Number of bytes desired for string
* representation of object, not including
* terminating null byte. */
{
String *stringPtr;
+ if (length < 0) {
+ Tcl_Panic("Tcl_SetObjLength: length requested is negative: "
+ "%" TCL_SIZE_MODIFIER "d (integer overflow?)", length);
+ }
if (Tcl_IsShared(objPtr)) {
Tcl_Panic("%s called with shared object", "Tcl_SetObjLength");
}
@@ -1050,12 +1062,17 @@ int
Tcl_AttemptSetObjLength(
Tcl_Obj *objPtr, /* Pointer to object. This object must not
* currently be shared. */
- size_t length) /* Number of bytes desired for string
+ Tcl_Size length) /* Number of bytes desired for string
* representation of object, not including
* terminating null byte. */
{
String *stringPtr;
+ if (length < 0) {
+ /* Negative lengths => most likely integer overflow */
+ return 0;
+ }
+
if (Tcl_IsShared(objPtr)) {
Tcl_Panic("%s called with shared object", "Tcl_AttemptSetObjLength");
}
@@ -1149,7 +1166,7 @@ Tcl_SetUnicodeObj(
Tcl_Obj *objPtr, /* The object to set the string of. */
const Tcl_UniChar *unicode, /* The unicode string used to initialize the
* object. */
- size_t numChars) /* Number of characters in the unicode
+ Tcl_Size numChars) /* Number of characters in the unicode
* string. */
{
if (Tcl_IsShared(objPtr)) {
@@ -1159,14 +1176,15 @@ Tcl_SetUnicodeObj(
SetUnicodeObj(objPtr, unicode, numChars);
}
-static size_t
+static Tcl_Size
UnicodeLength(
const Tcl_UniChar *unicode)
{
- size_t numChars = 0;
+ Tcl_Size numChars = 0;
if (unicode) {
- while ((numChars != TCL_INDEX_NONE) && (unicode[numChars] != 0)) {
+ /* TODO - is this overflow check really necessary? */
+ while ((numChars >= 0) && (unicode[numChars] != 0)) {
numChars++;
}
}
@@ -1178,12 +1196,12 @@ SetUnicodeObj(
Tcl_Obj *objPtr, /* The object to set the string of. */
const Tcl_UniChar *unicode, /* The unicode string used to initialize the
* object. */
- size_t numChars) /* Number of characters in the unicode
+ Tcl_Size numChars) /* Number of characters in the unicode
* string. */
{
String *stringPtr;
- if (numChars == TCL_INDEX_NONE) {
+ if (numChars < 0) {
numChars = UnicodeLength(unicode);
}
@@ -1228,20 +1246,20 @@ Tcl_AppendLimitedToObj(
Tcl_Obj *objPtr, /* Points to the object to append to. */
const char *bytes, /* Points to the bytes to append to the
* object. */
- size_t length, /* The number of bytes available to be
+ Tcl_Size length, /* The number of bytes available to be
* appended from "bytes". If -1, then
* all bytes up to a NUL byte are available. */
- size_t limit, /* The maximum number of bytes to append to
+ Tcl_Size limit, /* The maximum number of bytes to append to
* the object. */
const char *ellipsis) /* Ellipsis marker string, appended to the
* object to indicate not all available bytes
* at "bytes" were appended. */
{
String *stringPtr;
- size_t toCopy = 0;
- size_t eLen = 0;
+ Tcl_Size toCopy = 0;
+ Tcl_Size eLen = 0;
- if (length == TCL_INDEX_NONE) {
+ if (length < 0) {
length = (bytes ? strlen(bytes) : 0);
}
if (length == 0) {
@@ -1324,11 +1342,11 @@ Tcl_AppendToObj(
Tcl_Obj *objPtr, /* Points to the object to append to. */
const char *bytes, /* Points to the bytes to append to the
* object. */
- size_t length) /* The number of bytes to append from "bytes".
+ Tcl_Size length) /* The number of bytes to append from "bytes".
* If TCL_INDEX_NONE, then append all bytes up to NUL
* byte. */
{
- Tcl_AppendLimitedToObj(objPtr, bytes, length, TCL_INDEX_NONE, NULL);
+ Tcl_AppendLimitedToObj(objPtr, bytes, length, TCL_SIZE_MAX, NULL);
}
/*
@@ -1337,7 +1355,7 @@ Tcl_AppendToObj(
* Tcl_AppendUnicodeToObj --
*
* This function appends a Unicode string to an object in the most
- * efficient manner possible. Length must be >= 0.
+ * efficient manner possible.
*
* Results:
* None.
@@ -1353,7 +1371,8 @@ Tcl_AppendUnicodeToObj(
Tcl_Obj *objPtr, /* Points to the object to append to. */
const Tcl_UniChar *unicode, /* The unicode string to append to the
* object. */
- size_t length) /* Number of chars in "unicode". */
+ Tcl_Size length) /* Number of chars in "unicode". Negative
+ * lengths means nul terminated */
{
String *stringPtr;
@@ -1407,8 +1426,8 @@ Tcl_AppendObjToObj(
Tcl_Obj *appendObjPtr) /* Object to append. */
{
String *stringPtr;
- size_t length = 0, numChars;
- size_t appendNumChars = TCL_INDEX_NONE;
+ Tcl_Size length = 0, numChars;
+ Tcl_Size appendNumChars = TCL_INDEX_NONE;
const char *bytes;
/*
@@ -1448,7 +1467,7 @@ Tcl_AppendObjToObj(
* First, get the lengths.
*/
- size_t lengthSrc = 0;
+ Tcl_Size lengthSrc = 0;
(void) Tcl_GetByteArrayFromObj(objPtr, &length);
(void) Tcl_GetByteArrayFromObj(appendObjPtr, &lengthSrc);
@@ -1471,7 +1490,7 @@ Tcl_AppendObjToObj(
*/
TclAppendBytesToByteArray(objPtr,
- Tcl_GetByteArrayFromObj(appendObjPtr, (size_t *)NULL), lengthSrc);
+ Tcl_GetByteArrayFromObj(appendObjPtr, (Tcl_Size *) NULL), lengthSrc);
return;
}
@@ -1520,7 +1539,7 @@ Tcl_AppendObjToObj(
bytes = Tcl_GetStringFromObj(appendObjPtr, &length);
numChars = stringPtr->numChars;
- if ((numChars != TCL_INDEX_NONE) && TclHasInternalRep(appendObjPtr, &tclStringType)) {
+ if ((numChars >= 0) && TclHasInternalRep(appendObjPtr, &tclStringType)) {
String *appendStringPtr = GET_STRING(appendObjPtr);
appendNumChars = appendStringPtr->numChars;
@@ -1528,7 +1547,7 @@ Tcl_AppendObjToObj(
AppendUtfToUtfRep(objPtr, bytes, length);
- if ((numChars != TCL_INDEX_NONE) && (appendNumChars != TCL_INDEX_NONE)) {
+ if ((numChars >= 0) && (appendNumChars >= 0)) {
stringPtr->numChars = numChars + appendNumChars;
}
}
@@ -1554,12 +1573,12 @@ static void
AppendUnicodeToUnicodeRep(
Tcl_Obj *objPtr, /* Points to the object to append to. */
const Tcl_UniChar *unicode, /* String to append. */
- size_t appendNumChars) /* Number of chars of "unicode" to append. */
+ Tcl_Size appendNumChars) /* Number of chars of "unicode" to append. */
{
String *stringPtr;
- size_t numChars;
+ Tcl_Size numChars;
- if (appendNumChars == TCL_INDEX_NONE) {
+ if (appendNumChars < 0) {
appendNumChars = UnicodeLength(unicode);
}
if (appendNumChars == 0) {
@@ -1580,7 +1599,7 @@ AppendUnicodeToUnicodeRep(
numChars = stringPtr->numChars + appendNumChars;
if (numChars > stringPtr->maxChars) {
- size_t index = TCL_INDEX_NONE;
+ Tcl_Size offset = -1;
/*
* Protect against case where unicode points into the existing
@@ -1590,7 +1609,7 @@ AppendUnicodeToUnicodeRep(
if (unicode && unicode >= stringPtr->unicode
&& unicode <= stringPtr->unicode + stringPtr->maxChars) {
- index = unicode - stringPtr->unicode;
+ offset = unicode - stringPtr->unicode;
}
GrowUnicodeBuffer(objPtr, numChars);
@@ -1600,8 +1619,8 @@ AppendUnicodeToUnicodeRep(
* Relocate unicode if needed; see above.
*/
- if (index != TCL_INDEX_NONE) {
- unicode = stringPtr->unicode + index;
+ if (offset >= 0) {
+ unicode = stringPtr->unicode + offset;
}
}
@@ -1642,7 +1661,7 @@ static void
AppendUnicodeToUtfRep(
Tcl_Obj *objPtr, /* Points to the object to append to. */
const Tcl_UniChar *unicode, /* String to convert to UTF. */
- size_t numChars) /* Number of chars of "unicode" to convert. */
+ Tcl_Size numChars) /* Number of chars of "unicode" to convert. */
{
String *stringPtr = GET_STRING(objPtr);
@@ -1675,7 +1694,7 @@ static void
AppendUtfToUnicodeRep(
Tcl_Obj *objPtr, /* Points to the object to append to. */
const char *bytes, /* String to convert to Unicode. */
- size_t numBytes) /* Number of bytes of "bytes" to convert. */
+ Tcl_Size numBytes) /* Number of bytes of "bytes" to convert. */
{
String *stringPtr;
@@ -1683,7 +1702,7 @@ AppendUtfToUnicodeRep(
return;
}
- ExtendUnicodeRepWithString(objPtr, bytes, numBytes, TCL_INDEX_NONE);
+ ExtendUnicodeRepWithString(objPtr, bytes, numBytes, -1);
TclInvalidateStringRep(objPtr);
stringPtr = GET_STRING(objPtr);
stringPtr->allocated = 0;
@@ -1711,10 +1730,10 @@ static void
AppendUtfToUtfRep(
Tcl_Obj *objPtr, /* Points to the object to append to. */
const char *bytes, /* String to append. */
- size_t numBytes) /* Number of bytes of "bytes" to append. */
+ Tcl_Size numBytes) /* Number of bytes of "bytes" to append. */
{
String *stringPtr;
- size_t newLength, oldLength;
+ Tcl_Size newLength, oldLength;
if (numBytes == 0) {
return;
@@ -1729,11 +1748,14 @@ AppendUtfToUtfRep(
objPtr->length = 0;
}
oldLength = objPtr->length;
+ if (numBytes > TCL_SIZE_MAX - oldLength) {
+ Tcl_Panic("max size for a Tcl value (%" TCL_SIZE_MODIFIER "d bytes) exceeded", TCL_SIZE_MAX);
+ }
newLength = numBytes + oldLength;
stringPtr = GET_STRING(objPtr);
if (newLength > stringPtr->allocated) {
- size_t offset = TCL_INDEX_NONE;
+ Tcl_Size offset = -1;
/*
* Protect against case where unicode points into the existing
@@ -1757,7 +1779,7 @@ AppendUtfToUtfRep(
* Relocate bytes if needed; see above.
*/
- if (offset != TCL_INDEX_NONE) {
+ if (offset >= 0) {
bytes = objPtr->bytes + offset;
}
}
@@ -1766,7 +1788,7 @@ AppendUtfToUtfRep(
* Invalidate the unicode data.
*/
- stringPtr->numChars = TCL_INDEX_NONE;
+ stringPtr->numChars = -1;
stringPtr->hasUnicode = 0;
if (bytes) {
@@ -1812,7 +1834,7 @@ Tcl_AppendStringsToObj(
if (bytes == NULL) {
break;
}
- Tcl_AppendToObj(objPtr, bytes, TCL_INDEX_NONE);
+ Tcl_AppendToObj(objPtr, bytes, -1);
}
va_end(argList);
}
@@ -1842,12 +1864,12 @@ Tcl_AppendFormatToObj(
Tcl_Interp *interp,
Tcl_Obj *appendObj,
const char *format,
- size_t objc,
+ Tcl_Size objc,
Tcl_Obj *const objv[])
{
const char *span = format, *msg, *errCode;
int gotXpg = 0, gotSequential = 0;
- size_t objIndex = 0, originalLength, limit, numBytes = 0;
+ Tcl_Size objIndex = 0, originalLength, limit, numBytes = 0;
Tcl_UniChar ch = 0;
static const char *mixedXPG =
"cannot mix \"%\" and \"%n$\" conversion specifiers";
@@ -1861,7 +1883,7 @@ Tcl_AppendFormatToObj(
Tcl_Panic("%s called with shared object", "Tcl_AppendFormatToObj");
}
(void)Tcl_GetStringFromObj(appendObj, &originalLength);
- limit = (size_t)INT_MAX - originalLength;
+ limit = TCL_SIZE_MAX - originalLength;
/*
* Format string is NUL-terminated.
@@ -1870,12 +1892,13 @@ Tcl_AppendFormatToObj(
while (*format != '\0') {
char *end;
int gotMinus = 0, gotHash = 0, gotZero = 0, gotSpace = 0, gotPlus = 0;
- int width, gotPrecision, precision, sawFlag, useShort = 0, useBig = 0;
+ int gotPrecision, sawFlag, useShort = 0, useBig = 0;
+ Tcl_Size width, precision;
#ifndef TCL_WIDE_INT_IS_LONG
int useWide = 0;
#endif
- int newXpg, numChars, allocSegment = 0, segmentLimit;
- size_t segmentNumBytes;
+ int newXpg, allocSegment = 0;
+ Tcl_Size numChars, segmentLimit, segmentNumBytes;
Tcl_Obj *segment;
int step = TclUtfToUniChar(format, &ch);
@@ -1939,7 +1962,7 @@ Tcl_AppendFormatToObj(
}
gotSequential = 1;
}
- if (objIndex >= objc) {
+ if (objIndex < 0 || objIndex >= objc) {
msg = badIndex[gotXpg];
errCode = gotXpg ? "INDEXRANGE" : "FIELDVARMISMATCH";
goto errorMsg;
@@ -1996,7 +2019,7 @@ Tcl_AppendFormatToObj(
errCode = gotXpg ? "INDEXRANGE" : "FIELDVARMISMATCH";
goto errorMsg;
}
- if (TclGetIntFromObj(interp, objv[objIndex], &width) != TCL_OK) {
+ if (TclGetSizeFromObj(interp, objv[objIndex], &width) != TCL_OK) {
goto error;
}
if (width < 0) {
@@ -2007,7 +2030,7 @@ Tcl_AppendFormatToObj(
format += step;
step = TclUtfToUniChar(format, &ch);
}
- if (width > (int) limit) {
+ if (width > limit) {
msg = overflow;
errCode = "OVERFLOW";
goto errorMsg;
@@ -2033,7 +2056,7 @@ Tcl_AppendFormatToObj(
errCode = gotXpg ? "INDEXRANGE" : "FIELDVARMISMATCH";
goto errorMsg;
}
- if (TclGetIntFromObj(interp, objv[objIndex], &precision)
+ if (TclGetSizeFromObj(interp, objv[objIndex], &precision)
!= TCL_OK) {
goto error;
}
@@ -2159,7 +2182,8 @@ Tcl_AppendFormatToObj(
long l;
Tcl_WideInt w;
mp_int big;
- int toAppend, isNegative = 0;
+ int isNegative = 0;
+ Tcl_Size toAppend;
#ifndef TCL_WIDE_INT_IS_LONG
if (ch == 'p') {
@@ -2217,7 +2241,7 @@ Tcl_AppendFormatToObj(
TclNewObj(segment);
allocSegment = 1;
- segmentLimit = INT_MAX;
+ segmentLimit = TCL_SIZE_MAX;
Tcl_IncrRefCount(segment);
if ((isNegative || gotPlus || gotSpace) && (useBig || ch=='d')) {
@@ -2247,7 +2271,7 @@ Tcl_AppendFormatToObj(
switch (ch) {
case 'd': {
- size_t length;
+ Tcl_Size length;
Tcl_Obj *pure;
const char *bytes;
@@ -2282,10 +2306,10 @@ Tcl_AppendFormatToObj(
*/
if (gotPrecision) {
- if (length < (size_t)precision) {
+ if (length < precision) {
segmentLimit -= precision - length;
}
- while (length < (size_t)precision) {
+ while (length < precision) {
Tcl_AppendToObj(segment, "0", 1);
length++;
}
@@ -2293,10 +2317,10 @@ Tcl_AppendFormatToObj(
}
if (gotZero) {
length += Tcl_GetCharLength(segment);
- if (length < (size_t)width) {
+ if (length < width) {
segmentLimit -= width - length;
}
- while (length < (size_t)width) {
+ while (length < width) {
Tcl_AppendToObj(segment, "0", 1);
length++;
}
@@ -2320,7 +2344,7 @@ Tcl_AppendFormatToObj(
Tcl_WideUInt bits = 0;
Tcl_WideInt numDigits = 0;
int numBits = 4, base = 16, index = 0, shift = 0;
- size_t length;
+ Tcl_Size length;
Tcl_Obj *pure;
char *bytes;
@@ -2414,10 +2438,10 @@ Tcl_AppendFormatToObj(
mp_clear(&big);
}
if (gotPrecision) {
- if (length < (size_t)precision) {
+ if (length < precision) {
segmentLimit -= precision - length;
}
- while (length < (size_t)precision) {
+ while (length < precision) {
Tcl_AppendToObj(segment, "0", 1);
length++;
}
@@ -2425,10 +2449,10 @@ Tcl_AppendFormatToObj(
}
if (gotZero) {
length += Tcl_GetCharLength(segment);
- if (length < (size_t)width) {
+ if (length < width) {
segmentLimit -= width - length;
}
- while (length < (size_t)width) {
+ while (length < width) {
Tcl_AppendToObj(segment, "0", 1);
length++;
}
@@ -2481,15 +2505,15 @@ Tcl_AppendFormatToObj(
*p++ = '+';
}
if (width) {
- p += sprintf(p, "%d", width);
+ p += sprintf(p, "%" TCL_SIZE_MODIFIER "d", width);
if (width > length) {
length = width;
}
}
if (gotPrecision) {
*p++ = '.';
- p += sprintf(p, "%d", precision);
- if (precision > INT_MAX - length) {
+ p += sprintf(p, "%" TCL_SIZE_MODIFIER "d", precision);
+ if (precision > TCL_SIZE_MAX - length) {
msg = overflow;
errCode = "OVERFLOW";
goto errorMsg;
@@ -2588,7 +2612,7 @@ Tcl_AppendFormatToObj(
errorMsg:
if (interp != NULL) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj(msg, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(msg, -1));
Tcl_SetErrorCode(interp, "TCL", "FORMAT", errCode, NULL);
}
error:
@@ -2614,7 +2638,7 @@ Tcl_Obj *
Tcl_Format(
Tcl_Interp *interp,
const char *format,
- size_t objc,
+ Tcl_Size objc,
Tcl_Obj *const objv[])
{
int result;
@@ -2648,7 +2672,7 @@ AppendPrintfToObjVA(
va_list argList)
{
int code;
- size_t objc;
+ Tcl_Size objc;
Tcl_Obj **objv, *list;
const char *p;
@@ -2895,7 +2919,7 @@ Tcl_ObjPrintf(
char *
TclGetStringStorage(
Tcl_Obj *objPtr,
- size_t *sizePtr)
+ Tcl_Size *sizePtr)
{
String *stringPtr;
@@ -2929,14 +2953,16 @@ Tcl_Obj *
TclStringRepeat(
Tcl_Interp *interp,
Tcl_Obj *objPtr,
- size_t count,
+ Tcl_Size count,
int flags)
{
Tcl_Obj *objResultPtr;
int inPlace = flags & TCL_STRING_IN_PLACE;
- size_t length = 0, unichar = 0, done = 1;
+ Tcl_Size length = 0;
+ int unichar = 0;
+ Tcl_Size done = 1;
int binary = TclIsPureByteArray(objPtr);
- size_t maxCount;
+ Tcl_Size maxCount;
/* assert (count >= 2) */
@@ -2959,15 +2985,15 @@ TclStringRepeat(
if (binary) {
/* Result will be pure byte array. Pre-size it */
(void)Tcl_GetByteArrayFromObj(objPtr, &length);
- maxCount = TCL_SIZE_SMAX;
+ maxCount = TCL_SIZE_MAX;
} else if (unichar) {
/* Result will be pure Tcl_UniChar array. Pre-size it. */
(void)Tcl_GetUnicodeFromObj(objPtr, &length);
- maxCount = TCL_SIZE_SMAX/sizeof(Tcl_UniChar);
+ maxCount = TCL_SIZE_MAX/sizeof(Tcl_UniChar);
} else {
/* Result will be concat of string reps. Pre-size it. */
(void)Tcl_GetStringFromObj(objPtr, &length);
- maxCount = TCL_SIZE_SMAX;
+ maxCount = TCL_SIZE_MAX;
}
if (length == 0) {
@@ -2980,9 +3006,9 @@ TclStringRepeat(
if (interp) {
Tcl_SetObjResult(
interp,
- Tcl_ObjPrintf("max size for a Tcl value (%" TCL_Z_MODIFIER
- "u bytes) exceeded",
- TCL_SIZE_SMAX));
+ Tcl_ObjPrintf("max size for a Tcl value (%" TCL_SIZE_MODIFIER
+ "d bytes) exceeded",
+ TCL_SIZE_MAX));
Tcl_SetErrorCode(interp, "TCL", "MEMORY", NULL);
}
return NULL;
@@ -3001,7 +3027,7 @@ TclStringRepeat(
done *= 2;
}
TclAppendBytesToByteArray(objResultPtr,
- Tcl_GetByteArrayFromObj(objResultPtr, (size_t *)NULL),
+ Tcl_GetByteArrayFromObj(objResultPtr, (Tcl_Size *) NULL),
(count - done) * length);
} else if (unichar) {
/*
@@ -3015,11 +3041,12 @@ TclStringRepeat(
objResultPtr = objPtr;
}
+ /* TODO - overflow check */
if (0 == Tcl_AttemptSetObjLength(objResultPtr, count*length)) {
if (interp) {
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
"string size overflow: unable to alloc %"
- TCL_Z_MODIFIER "u bytes",
+ TCL_SIZE_MODIFIER "d bytes",
STRING_SIZE(count*length)));
Tcl_SetErrorCode(interp, "TCL", "MEMORY", NULL);
}
@@ -3043,10 +3070,11 @@ TclStringRepeat(
TclFreeInternalRep(objPtr);
objResultPtr = objPtr;
}
+ /* TODO - overflow check */
if (0 == Tcl_AttemptSetObjLength(objResultPtr, count*length)) {
if (interp) {
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "string size overflow: unable to alloc %" TCL_Z_MODIFIER "u bytes",
+ "string size overflow: unable to alloc %" TCL_SIZE_MODIFIER "d bytes",
count*length));
Tcl_SetErrorCode(interp, "TCL", "MEMORY", NULL);
}
@@ -3090,7 +3118,7 @@ TclStringCat(
{
Tcl_Obj *objResultPtr, * const *ov;
int oc, binary = 1;
- size_t length = 0;
+ Tcl_Size length = 0;
int allowUniChar = 1, requestUniChar = 0, forceUniChar = 0;
int first = objc - 1; /* Index of first value possibly not empty */
int last = 0; /* Index of last value possibly not empty */
@@ -3152,7 +3180,7 @@ TclStringCat(
* Result will be pure byte array. Pre-size it
*/
- size_t numBytes = 0;
+ Tcl_Size numBytes = 0;
ov = objv;
oc = objc;
do {
@@ -3172,7 +3200,7 @@ TclStringCat(
if (length == 0) {
first = last;
}
- if (length > (TCL_SIZE_SMAX-numBytes)) {
+ if (length > (TCL_SIZE_MAX-numBytes)) {
goto overflow;
}
length += numBytes;
@@ -3190,7 +3218,7 @@ TclStringCat(
Tcl_Obj *objPtr = *ov++;
if ((objPtr->bytes == NULL) || (objPtr->length)) {
- size_t numChars;
+ Tcl_Size numChars;
(void)Tcl_GetUnicodeFromObj(objPtr, &numChars); /* PANIC? */
if (numChars) {
@@ -3198,7 +3226,7 @@ TclStringCat(
if (length == 0) {
first = last;
}
- if (length > ((TCL_SIZE_SMAX/sizeof(Tcl_UniChar))-numChars)) {
+ if (length > (Tcl_Size) ((TCL_SIZE_MAX/sizeof(Tcl_UniChar))-numChars)) {
goto overflow;
}
length += numChars;
@@ -3240,7 +3268,7 @@ TclStringCat(
first = last = objc - oc - 1;
if (oc && (length == 0)) {
- size_t numBytes;
+ Tcl_Size numBytes;
/* assert ( pendingPtr != NULL ) */
@@ -3265,7 +3293,7 @@ TclStringCat(
if (numBytes) {
first = last;
}
- } else if (numBytes > (TCL_SIZE_SMAX - length)) {
+ } else if (numBytes > (TCL_SIZE_MAX - length)) {
goto overflow;
}
length += numBytes;
@@ -3273,7 +3301,7 @@ TclStringCat(
} while (oc && (length == 0));
while (oc) {
- size_t numBytes;
+ Tcl_Size numBytes;
Tcl_Obj *objPtr = *ov++;
/* assert ( length > 0 && pendingPtr == NULL ) */
@@ -3282,7 +3310,7 @@ TclStringCat(
numBytes = objPtr->length;
if (numBytes) {
last = objc - oc;
- if (numBytes > (TCL_SIZE_SMAX - length)) {
+ if (numBytes > (TCL_SIZE_MAX - length)) {
goto overflow;
}
length += numBytes;
@@ -3309,7 +3337,7 @@ TclStringCat(
*/
if (inPlace && !Tcl_IsShared(*objv)) {
- size_t start = 0;
+ Tcl_Size start = 0;
objResultPtr = *objv++; objc--;
(void)Tcl_GetByteArrayFromObj(objResultPtr, &start);
@@ -3328,7 +3356,7 @@ TclStringCat(
*/
if (TclIsPureByteArray(objPtr)) {
- size_t more = 0;
+ Tcl_Size more = 0;
unsigned char *src = Tcl_GetByteArrayFromObj(objPtr, &more);
memcpy(dst, src, more);
dst += more;
@@ -3339,7 +3367,7 @@ TclStringCat(
Tcl_UniChar *dst;
if (inPlace && !Tcl_IsShared(*objv)) {
- size_t start;
+ Tcl_Size start;
objResultPtr = *objv++; objc--;
@@ -3379,7 +3407,7 @@ TclStringCat(
Tcl_Obj *objPtr = *objv++;
if ((objPtr->bytes == NULL) || (objPtr->length)) {
- size_t more;
+ Tcl_Size more;
Tcl_UniChar *src = Tcl_GetUnicodeFromObj(objPtr, &more);
memcpy(dst, src, more * sizeof(Tcl_UniChar));
dst += more;
@@ -3390,7 +3418,7 @@ TclStringCat(
char *dst;
if (inPlace && !Tcl_IsShared(*objv)) {
- size_t start;
+ Tcl_Size start;
objResultPtr = *objv++; objc--;
@@ -3426,7 +3454,7 @@ TclStringCat(
Tcl_Obj *objPtr = *objv++;
if ((objPtr->bytes == NULL) || (objPtr->length)) {
- size_t more;
+ Tcl_Size more;
char *src = Tcl_GetStringFromObj(objPtr, &more);
memcpy(dst, src, more);
@@ -3441,7 +3469,7 @@ TclStringCat(
overflow:
if (interp) {
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "max size for a Tcl value (%" TCL_Z_MODIFIER "u bytes) exceeded", TCL_SIZE_SMAX));
+ "max size for a Tcl value (%" TCL_SIZE_MODIFIER "d bytes) exceeded", TCL_SIZE_MAX));
Tcl_SetErrorCode(interp, "TCL", "MEMORY", NULL);
}
return NULL;
@@ -3469,12 +3497,12 @@ TclStringCmp(
Tcl_Obj *value2Ptr,
int checkEq, /* comparison is only for equality */
int nocase, /* comparison is not case sensitive */
- size_t reqlength) /* requested length in characters;
+ Tcl_Size reqlength) /* requested length in characters;
* TCL_INDEX_NONE to compare whole strings */
{
const char *s1, *s2;
int empty, match;
- size_t length, s1len = 0, s2len = 0;
+ Tcl_Size length, s1len = 0, s2len = 0;
memCmpFn_t memCmpFn;
if ((reqlength == 0) || (value1Ptr == value2Ptr)) {
@@ -3663,14 +3691,14 @@ Tcl_Obj *
TclStringFirst(
Tcl_Obj *needle,
Tcl_Obj *haystack,
- size_t start)
+ Tcl_Size start)
{
- size_t lh = 0, ln = Tcl_GetCharLength(needle);
- size_t value = TCL_INDEX_NONE;
+ Tcl_Size lh = 0, ln = Tcl_GetCharLength(needle);
+ Tcl_Size value = -1;
Tcl_UniChar *checkStr, *endStr, *uh, *un;
Tcl_Obj *obj;
- if (start == TCL_INDEX_NONE) {
+ if (start < 0) {
start = 0;
}
if (ln == 0) {
@@ -3770,10 +3798,10 @@ Tcl_Obj *
TclStringLast(
Tcl_Obj *needle,
Tcl_Obj *haystack,
- size_t last)
+ Tcl_Size last)
{
- size_t lh = 0, ln = Tcl_GetCharLength(needle);
- size_t value = TCL_INDEX_NONE;
+ Tcl_Size lh = 0, ln = Tcl_GetCharLength(needle);
+ Tcl_Size value = -1;
Tcl_UniChar *checkStr, *uh, *un;
Tcl_Obj *obj;
@@ -3791,7 +3819,7 @@ TclStringLast(
unsigned char *check, *bh = Tcl_GetByteArrayFromObj(haystack, &lh);
unsigned char *bn = Tcl_GetByteArrayFromObj(needle, &ln);
- if (last + 1 >= lh + 1) {
+ if (last >= lh) {
last = lh - 1;
}
if (last + 1 < ln) {
@@ -3814,7 +3842,7 @@ TclStringLast(
uh = Tcl_GetUnicodeFromObj(haystack, &lh);
un = Tcl_GetUnicodeFromObj(needle, &ln);
- if (last + 1 >= lh + 1) {
+ if (last >= lh) {
last = lh - 1;
}
if (last + 1 < ln) {
@@ -3857,7 +3885,7 @@ static void
ReverseBytes(
unsigned char *to, /* Copy bytes into here... */
unsigned char *from, /* ...from here... */
- size_t count) /* Until this many are copied, */
+ Tcl_Size count) /* Until this many are copied, */
/* reversing as you go. */
{
unsigned char *src = from + count;
@@ -3890,13 +3918,13 @@ TclStringReverse(
#endif
if (TclIsPureByteArray(objPtr)) {
- size_t numBytes = 0;
+ Tcl_Size numBytes = 0;
unsigned char *from = Tcl_GetByteArrayFromObj(objPtr, &numBytes);
if (!inPlace || Tcl_IsShared(objPtr)) {
objPtr = Tcl_NewByteArrayObj(NULL, numBytes);
}
- ReverseBytes(Tcl_GetByteArrayFromObj(objPtr, (size_t *)NULL), from, numBytes);
+ ReverseBytes(Tcl_GetByteArrayFromObj(objPtr, (Tcl_Size *)NULL), from, numBytes);
return objPtr;
}
@@ -3971,8 +3999,8 @@ TclStringReverse(
}
if (objPtr->bytes) {
- size_t numChars = stringPtr->numChars;
- size_t numBytes = objPtr->length;
+ Tcl_Size numChars = stringPtr->numChars;
+ Tcl_Size numBytes = objPtr->length;
char *to, *from = objPtr->bytes;
if (!inPlace || Tcl_IsShared(objPtr)) {
@@ -3981,7 +4009,7 @@ TclStringReverse(
}
to = objPtr->bytes;
- if ((numChars == TCL_INDEX_NONE) || (numChars < numBytes)) {
+ if (numChars < numBytes) {
/*
* Either numChars == -1 and we don't know how many chars are
* represented by objPtr->bytes and we need Pass 1 just in case,
@@ -3991,7 +4019,7 @@ TclStringReverse(
* Pass 1. Reverse the bytes of each multi-byte character.
*/
- size_t bytesLeft = numBytes;
+ Tcl_Size bytesLeft = numBytes;
int chw;
while (bytesLeft) {
@@ -4001,7 +4029,7 @@ TclStringReverse(
* skip calling Tcl_UtfCharComplete() here.
*/
- size_t bytesInChar = TclUtfToUCS4(from, &chw);
+ int bytesInChar = TclUtfToUCS4(from, &chw);
ReverseBytes((unsigned char *)to, (unsigned char *)from,
bytesInChar);
@@ -4049,8 +4077,8 @@ Tcl_Obj *
TclStringReplace(
Tcl_Interp *interp, /* For error reporting, may be NULL */
Tcl_Obj *objPtr, /* String to act upon */
- size_t first, /* First index to replace */
- size_t count, /* How many chars to replace */
+ Tcl_Size first, /* First index to replace */
+ Tcl_Size count, /* How many chars to replace */
Tcl_Obj *insertPtr, /* Replacement string, may be NULL */
int flags) /* TCL_STRING_IN_PLACE => attempt in-place */
{
@@ -4058,13 +4086,16 @@ TclStringReplace(
Tcl_Obj *result;
/* Replace nothing with nothing */
- if ((insertPtr == NULL) && (count == 0)) {
+ if ((insertPtr == NULL) && (count <= 0)) {
if (inPlace) {
return objPtr;
} else {
return Tcl_DuplicateObj(objPtr);
}
}
+ if (first < 0) {
+ first = 0;
+ }
/*
* The caller very likely had to call Tcl_GetCharLength() or similar
@@ -4074,7 +4105,7 @@ TclStringReplace(
*/
if (TclIsPureByteArray(objPtr)) {
- size_t numBytes = 0;
+ Tcl_Size numBytes = 0;
unsigned char *bytes = Tcl_GetByteArrayFromObj(objPtr, &numBytes);
if (insertPtr == NULL) {
@@ -4097,7 +4128,7 @@ TclStringReplace(
}
if (TclIsPureByteArray(insertPtr)) {
- size_t newBytes = 0;
+ Tcl_Size newBytes = 0;
unsigned char *iBytes
= Tcl_GetByteArrayFromObj(insertPtr, &newBytes);
@@ -4112,11 +4143,11 @@ TclStringReplace(
return objPtr;
}
- if (newBytes > (TCL_SIZE_SMAX - (numBytes - count))) {
+ if (newBytes > (TCL_SIZE_MAX - (numBytes - count))) {
if (interp) {
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "max size for a Tcl value (%" TCL_Z_MODIFIER "u bytes) exceeded",
- TCL_SIZE_SMAX));
+ "max size for a Tcl value (%" TCL_SIZE_MODIFIER "d bytes) exceeded",
+ TCL_SIZE_MAX));
Tcl_SetErrorCode(interp, "TCL", "MEMORY", NULL);
}
return NULL;
@@ -4142,7 +4173,7 @@ TclStringReplace(
/* The traditional implementation... */
{
- size_t numChars;
+ Tcl_Size numChars;
Tcl_UniChar *ustring = Tcl_GetUnicodeFromObj(objPtr, &numChars);
/* TODO: Is there an in-place option worth pursuing here? */
@@ -4192,11 +4223,11 @@ static void
ExtendUnicodeRepWithString(
Tcl_Obj *objPtr,
const char *bytes,
- size_t numBytes,
- size_t numAppendChars)
+ Tcl_Size numBytes,
+ Tcl_Size numAppendChars)
{
String *stringPtr = GET_STRING(objPtr);
- size_t needed, numOrigChars = 0;
+ Tcl_Size needed, numOrigChars = 0;
Tcl_UniChar *dst, unichar = 0;
if (stringPtr->hasUnicode) {
@@ -4394,21 +4425,21 @@ UpdateStringOfString(
}
}
-static size_t
+static Tcl_Size
ExtendStringRepWithUnicode(
Tcl_Obj *objPtr,
const Tcl_UniChar *unicode,
- size_t numChars)
+ Tcl_Size numChars)
{
/*
* Pre-condition: this is the "string" Tcl_ObjType.
*/
- size_t i, origLength, size = 0;
+ Tcl_Size i, origLength, size = 0;
char *dst;
String *stringPtr = GET_STRING(objPtr);
- if (numChars == TCL_INDEX_NONE) {
+ if (numChars < 0) {
numChars = UnicodeLength(unicode);
}
@@ -4425,14 +4456,18 @@ ExtendStringRepWithUnicode(
* Quick cheap check in case we have more than enough room.
*/
- if (numChars <= (INT_MAX - size)/TCL_UTF_MAX
+ if (numChars <= (TCL_SIZE_MAX - size)/TCL_UTF_MAX
&& stringPtr->allocated >= size + numChars * TCL_UTF_MAX) {
goto copyBytes;
}
- for (i = 0; i < numChars; i++) {
+ for (i = 0; i < numChars && size >= 0; i++) {
+ /* TODO - overflow check! I don't think check below at end suffices */
size += TclUtfCount(unicode[i]);
}
+ if (size < 0) {
+ Tcl_Panic("max size for a Tcl value (%" TCL_SIZE_MODIFIER "d bytes) exceeded", TCL_SIZE_MAX);
+ }
/*
* Grow space if needed.
diff --git a/generic/tclStringRep.h b/generic/tclStringRep.h
index ab52ea8..d39f705 100644
--- a/generic/tclStringRep.h
+++ b/generic/tclStringRep.h
@@ -68,6 +68,10 @@ typedef struct {
* field above. */
} String;
+/* Limit on string lengths. The -1 because limit does not include the nul */
+#define STRING_MAXCHARS \
+ ((Tcl_Size)((TCL_SIZE_MAX - offsetof(String, unicode))/sizeof(Tcl_UniChar) - 1))
+/* Memory needed to hold a string of length numChars - including NUL */
#define STRING_SIZE(numChars) \
(offsetof(String, unicode) + sizeof(Tcl_UniChar) + ((numChars) * sizeof(Tcl_UniChar)))
#define stringAttemptAlloc(numChars) \
diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c
index dbd8b52..7c27293 100644
--- a/generic/tclStubInit.c
+++ b/generic/tclStubInit.c
@@ -105,7 +105,7 @@ static void uniCodePanic() {
int TclListObjGetElements(Tcl_Interp *interp, Tcl_Obj *listPtr,
int *objcPtr, Tcl_Obj ***objvPtr) {
- size_t n = TCL_INDEX_NONE;
+ Tcl_Size n = TCL_INDEX_NONE;
int result = Tcl_ListObjGetElements(interp, listPtr, &n, objvPtr);
if (objcPtr) {
if ((sizeof(int) != sizeof(size_t)) && (result == TCL_OK) && (n > INT_MAX)) {
@@ -120,7 +120,7 @@ int TclListObjGetElements(Tcl_Interp *interp, Tcl_Obj *listPtr,
}
int TclListObjLength(Tcl_Interp *interp, Tcl_Obj *listPtr,
int *lengthPtr) {
- size_t n = TCL_INDEX_NONE;
+ Tcl_Size n = TCL_INDEX_NONE;
int result = Tcl_ListObjLength(interp, listPtr, &n);
if (lengthPtr) {
if ((sizeof(int) != sizeof(size_t)) && (result == TCL_OK) && (n > INT_MAX)) {
@@ -135,7 +135,7 @@ int TclListObjLength(Tcl_Interp *interp, Tcl_Obj *listPtr,
}
int TclDictObjSize(Tcl_Interp *interp, Tcl_Obj *dictPtr,
int *sizePtr) {
- size_t n = TCL_INDEX_NONE;
+ Tcl_Size n = TCL_INDEX_NONE;
int result = Tcl_DictObjSize(interp, dictPtr, &n);
if (sizePtr) {
if ((sizeof(int) != sizeof(size_t)) && (result == TCL_OK) && (n > INT_MAX)) {
@@ -150,7 +150,7 @@ int TclDictObjSize(Tcl_Interp *interp, Tcl_Obj *dictPtr,
}
int TclSplitList(Tcl_Interp *interp, const char *listStr, int *argcPtr,
const char ***argvPtr) {
- size_t n = TCL_INDEX_NONE;
+ Tcl_Size n = TCL_INDEX_NONE;
int result = Tcl_SplitList(interp, listStr, &n, argvPtr);
if (argcPtr) {
if ((sizeof(int) != sizeof(size_t)) && (result == TCL_OK) && (n > INT_MAX)) {
@@ -165,7 +165,7 @@ int TclSplitList(Tcl_Interp *interp, const char *listStr, int *argcPtr,
return result;
}
void TclSplitPath(const char *path, int *argcPtr, const char ***argvPtr) {
- size_t n = TCL_INDEX_NONE;
+ Tcl_Size n = TCL_INDEX_NONE;
Tcl_SplitPath(path, &n, argvPtr);
if (argcPtr) {
if ((sizeof(int) != sizeof(size_t)) && (n > INT_MAX)) {
@@ -177,7 +177,7 @@ void TclSplitPath(const char *path, int *argcPtr, const char ***argvPtr) {
}
}
Tcl_Obj *TclFSSplitPath(Tcl_Obj *pathPtr, int *lenPtr) {
- size_t n = TCL_INDEX_NONE;
+ Tcl_Size n = TCL_INDEX_NONE;
Tcl_Obj *result = Tcl_FSSplitPath(pathPtr, &n);
if (lenPtr) {
if ((sizeof(int) != sizeof(size_t)) && result && (n > INT_MAX)) {
@@ -191,7 +191,7 @@ Tcl_Obj *TclFSSplitPath(Tcl_Obj *pathPtr, int *lenPtr) {
int TclParseArgsObjv(Tcl_Interp *interp,
const Tcl_ArgvInfo *argTable, int *objcPtr, Tcl_Obj *const *objv,
Tcl_Obj ***remObjv) {
- size_t n = (*objcPtr < 0) ? TCL_INDEX_NONE: (size_t)*objcPtr ;
+ Tcl_Size n = (*objcPtr < 0) ? TCL_INDEX_NONE: *objcPtr ;
int result = Tcl_ParseArgsObjv(interp, argTable, &n, objv, remObjv);
*objcPtr = (int)n;
return result;
@@ -337,7 +337,7 @@ static int exprInt(Tcl_Interp *interp, const char *expr, int *ptr){
*ptr = (int)longValue;
} else {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "integer value too large to represent", TCL_INDEX_NONE));
+ "integer value too large to represent", -1));
result = TCL_ERROR;
}
}
@@ -353,7 +353,7 @@ static int exprIntObj(Tcl_Interp *interp, Tcl_Obj*expr, int *ptr){
*ptr = (int)longValue;
} else {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "integer value too large to represent", TCL_INDEX_NONE));
+ "integer value too large to represent", -1));
result = TCL_ERROR;
}
}
diff --git a/generic/tclTest.c b/generic/tclTest.c
index ca2d9cb..edc548f 100644
--- a/generic/tclTest.c
+++ b/generic/tclTest.c
@@ -920,7 +920,7 @@ TestasyncCmd(
break;
}
}
- Tcl_SetObjResult(interp, Tcl_NewStringObj(argv[3], TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(argv[3], -1));
Tcl_MutexUnlock(&asyncTestMutex);
return code;
} else if (strcmp(argv[1], "marklater") == 0) {
@@ -1204,8 +1204,8 @@ CmdDelProc1(
void *clientData) /* String to save. */
{
Tcl_DStringInit(&delString);
- Tcl_DStringAppend(&delString, "CmdDelProc1 ", TCL_INDEX_NONE);
- Tcl_DStringAppend(&delString, (char *) clientData, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&delString, "CmdDelProc1 ", -1);
+ Tcl_DStringAppend(&delString, (char *) clientData, -1);
}
static void
@@ -1213,8 +1213,8 @@ CmdDelProc2(
void *clientData) /* String to save. */
{
Tcl_DStringInit(&delString);
- Tcl_DStringAppend(&delString, "CmdDelProc2 ", TCL_INDEX_NONE);
- Tcl_DStringAppend(&delString, (char *) clientData, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&delString, "CmdDelProc2 ", -1);
+ Tcl_DStringAppend(&delString, (char *) clientData, -1);
}
/*
@@ -1467,7 +1467,7 @@ ObjTraceProc(
const char *word = Tcl_GetString(objv[0]);
if (!strcmp(word, "Error")) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj(command, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(command, -1));
return TCL_ERROR;
} else if (!strcmp(word, "Break")) {
return TCL_BREAK;
@@ -1831,7 +1831,7 @@ TestdoubledigitsObjCmd(
type = types[type];
if (objc > 4) {
if (strcmp(Tcl_GetString(objv[4]), "shorten")) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj("bad flag", TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("bad flag", -1));
return TCL_ERROR;
}
type |= TCL_DD_SHORTEST;
@@ -3424,7 +3424,7 @@ TestlinkCmd(
}
}
if (argv[6][0] != 0) {
- tmp = Tcl_NewStringObj(argv[6], TCL_INDEX_NONE);
+ tmp = Tcl_NewStringObj(argv[6], -1);
if (Tcl_GetWideIntFromObj(interp, tmp, &wideVar) != TCL_OK) {
Tcl_DecrRefCount(tmp);
return TCL_ERROR;
@@ -3482,7 +3482,7 @@ TestlinkCmd(
}
if (argv[15][0]) {
Tcl_WideInt w;
- tmp = Tcl_NewStringObj(argv[15], TCL_INDEX_NONE);
+ tmp = Tcl_NewStringObj(argv[15], -1);
if (Tcl_GetWideIntFromObj(interp, tmp, &w) != TCL_OK) {
Tcl_DecrRefCount(tmp);
return TCL_ERROR;
@@ -3532,7 +3532,7 @@ TestlinkCmd(
Tcl_UpdateLinkedVar(interp, "string");
}
if (argv[6][0] != 0) {
- tmp = Tcl_NewStringObj(argv[6], TCL_INDEX_NONE);
+ tmp = Tcl_NewStringObj(argv[6], -1);
if (Tcl_GetWideIntFromObj(interp, tmp, &wideVar) != TCL_OK) {
Tcl_DecrRefCount(tmp);
return TCL_ERROR;
@@ -3599,7 +3599,7 @@ TestlinkCmd(
}
if (argv[15][0]) {
Tcl_WideInt w;
- tmp = Tcl_NewStringObj(argv[15], TCL_INDEX_NONE);
+ tmp = Tcl_NewStringObj(argv[15], -1);
if (Tcl_GetWideIntFromObj(interp, tmp, &w) != TCL_OK) {
Tcl_DecrRefCount(tmp);
return TCL_ERROR;
@@ -3706,7 +3706,7 @@ TestlinkarrayCmd(
return TCL_ERROR;
}
if (Tcl_GetIntFromObj(interp, objv[i++], &size) == TCL_ERROR) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj("wrong size value", TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("wrong size value", -1));
return TCL_ERROR;
}
name = Tcl_GetString(objv[i++]);
@@ -3718,7 +3718,7 @@ TestlinkarrayCmd(
if (i < objc) {
if (Tcl_GetWideIntFromObj(interp, objv[i], &addr) == TCL_ERROR) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "wrong address value", TCL_INDEX_NONE));
+ "wrong address value", -1));
return TCL_ERROR;
}
} else {
@@ -3818,7 +3818,7 @@ TestlistrepCmd(
#define APPEND_FIELD(targetObj_, structPtr_, fld_) \
do { \
Tcl_ListObjAppendElement( \
- interp, (targetObj_), Tcl_NewStringObj(#fld_, TCL_INDEX_NONE)); \
+ interp, (targetObj_), Tcl_NewStringObj(#fld_, -1)); \
Tcl_ListObjAppendElement( \
interp, (targetObj_), Tcl_NewWideIntObj((structPtr_)->fld_)); \
} while (0)
@@ -3836,10 +3836,10 @@ TestlistrepCmd(
return TCL_ERROR;
}
ListObjGetRep(objv[2], &listRep);
- listRepObjs[0] = Tcl_NewStringObj("store", TCL_INDEX_NONE);
+ listRepObjs[0] = Tcl_NewStringObj("store", -1);
listRepObjs[1] = Tcl_NewListObj(12, NULL);
Tcl_ListObjAppendElement(
- interp, listRepObjs[1], Tcl_NewStringObj("memoryAddress", TCL_INDEX_NONE));
+ interp, listRepObjs[1], Tcl_NewStringObj("memoryAddress", -1));
Tcl_ListObjAppendElement(
interp, listRepObjs[1], Tcl_ObjPrintf("%p", listRep.storePtr));
APPEND_FIELD(listRepObjs[1], listRep.storePtr, firstUsed);
@@ -3848,11 +3848,11 @@ TestlistrepCmd(
APPEND_FIELD(listRepObjs[1], listRep.storePtr, refCount);
APPEND_FIELD(listRepObjs[1], listRep.storePtr, flags);
if (listRep.spanPtr) {
- listRepObjs[2] = Tcl_NewStringObj("span", TCL_INDEX_NONE);
+ listRepObjs[2] = Tcl_NewStringObj("span", -1);
listRepObjs[3] = Tcl_NewListObj(8, NULL);
Tcl_ListObjAppendElement(interp,
listRepObjs[3],
- Tcl_NewStringObj("memoryAddress", TCL_INDEX_NONE));
+ Tcl_NewStringObj("memoryAddress", -1));
Tcl_ListObjAppendElement(
interp, listRepObjs[3], Tcl_ObjPrintf("%p", listRep.spanPtr));
APPEND_FIELD(listRepObjs[3], listRep.spanPtr, spanStart);
@@ -3872,7 +3872,7 @@ TestlistrepCmd(
}
resultObj = Tcl_NewListObj(2, NULL);
Tcl_ListObjAppendElement(
- NULL, resultObj, Tcl_NewStringObj("LIST_SPAN_THRESHOLD", TCL_INDEX_NONE));
+ NULL, resultObj, Tcl_NewStringObj("LIST_SPAN_THRESHOLD", -1));
Tcl_ListObjAppendElement(
NULL, resultObj, Tcl_NewWideIntObj(LIST_SPAN_THRESHOLD));
break;
@@ -3946,7 +3946,7 @@ TestlocaleCmd(
}
locale = setlocale(lcTypes[index], locale);
if (locale) {
- Tcl_SetStringObj(Tcl_GetObjResult(interp), locale, TCL_INDEX_NONE);
+ Tcl_SetStringObj(Tcl_GetObjResult(interp), locale, -1);
}
return TCL_OK;
}
@@ -4168,7 +4168,7 @@ PrintParse(
break;
}
Tcl_ListObjAppendElement(NULL, objPtr,
- Tcl_NewStringObj(typeString, TCL_INDEX_NONE));
+ Tcl_NewStringObj(typeString, -1));
Tcl_ListObjAppendElement(NULL, objPtr,
Tcl_NewStringObj(tokenPtr->start, tokenPtr->size));
Tcl_ListObjAppendElement(NULL, objPtr,
@@ -5366,7 +5366,7 @@ GetTimesObjCmd(
/* TclGetString 100000 times */
fprintf(stderr, "Tcl_GetStringFromObj of \"12345\" 100000 times\n");
- objPtr = Tcl_NewStringObj("12345", TCL_INDEX_NONE);
+ objPtr = Tcl_NewStringObj("12345", -1);
Tcl_GetTime(&start);
for (i = 0; i < 100000; i++) {
(void) TclGetString(objPtr);
@@ -5669,7 +5669,7 @@ TestbytestringObjCmd(
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* The argument objects. */
{
- size_t n = 0;
+ Tcl_Size n = 0;
const char *p;
if (objc != 2) {
@@ -5969,7 +5969,7 @@ TestChannelCmd(
if ((cmdName[0] == 's') && (strncmp(cmdName, "setchannelerror", len) == 0)) {
- Tcl_Obj *msg = Tcl_NewStringObj(argv[3], TCL_INDEX_NONE);
+ Tcl_Obj *msg = Tcl_NewStringObj(argv[3], -1);
Tcl_IncrRefCount(msg);
Tcl_SetChannelError(chan, msg);
@@ -5982,7 +5982,7 @@ TestChannelCmd(
}
if ((cmdName[0] == 's') && (strncmp(cmdName, "setchannelerrorinterp", len) == 0)) {
- Tcl_Obj *msg = Tcl_NewStringObj(argv[3], TCL_INDEX_NONE);
+ Tcl_Obj *msg = Tcl_NewStringObj(argv[3], -1);
Tcl_IncrRefCount(msg);
Tcl_SetChannelErrorInterp(interp, msg);
@@ -6369,7 +6369,7 @@ TestChannelCmd(
}
return TclChannelTransform(interp, chan,
- Tcl_NewStringObj(argv[4], TCL_INDEX_NONE));
+ Tcl_NewStringObj(argv[4], -1));
}
if ((cmdName[0] == 'u') && (strncmp(cmdName, "unstack", len) == 0)) {
@@ -6460,7 +6460,7 @@ TestChannelEventCmd(
esPtr->chanPtr = chanPtr;
esPtr->interp = interp;
esPtr->mask = mask;
- esPtr->scriptPtr = Tcl_NewStringObj(argv[4], TCL_INDEX_NONE);
+ esPtr->scriptPtr = Tcl_NewStringObj(argv[4], -1);
Tcl_IncrRefCount(esPtr->scriptPtr);
Tcl_CreateChannelHandler((Tcl_Channel) chanPtr, mask,
@@ -6527,10 +6527,10 @@ TestChannelEventCmd(
esPtr = esPtr->nextPtr) {
if (esPtr->mask) {
Tcl_ListObjAppendElement(interp, resultListPtr, Tcl_NewStringObj(
- (esPtr->mask == TCL_READABLE) ? "readable" : "writable", TCL_INDEX_NONE));
+ (esPtr->mask == TCL_READABLE) ? "readable" : "writable", -1));
} else {
Tcl_ListObjAppendElement(interp, resultListPtr,
- Tcl_NewStringObj("none", TCL_INDEX_NONE));
+ Tcl_NewStringObj("none", -1));
}
Tcl_ListObjAppendElement(interp, resultListPtr, esPtr->scriptPtr);
}
@@ -6885,7 +6885,7 @@ TestFilesystemObjCmd(
res = Tcl_FSUnregister(&testReportingFilesystem);
msg = (res == TCL_OK) ? "unregistered" : "failed";
}
- Tcl_SetObjResult(interp, Tcl_NewStringObj(msg , TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(msg , -1));
return res;
}
@@ -6967,7 +6967,7 @@ TestReport(
Tcl_DString ds;
Tcl_DStringInit(&ds);
- Tcl_DStringAppend(&ds, "lappend filesystemReport ", TCL_INDEX_NONE);
+ Tcl_DStringAppend(&ds, "lappend filesystemReport ", -1);
Tcl_DStringStartSublist(&ds);
Tcl_DStringAppendElement(&ds, cmd);
if (path != NULL) {
@@ -7256,7 +7256,7 @@ TestSimpleFilesystemObjCmd(
res = Tcl_FSUnregister(&simpleFilesystem);
msg = (res == TCL_OK) ? "unregistered" : "failed";
}
- Tcl_SetObjResult(interp, Tcl_NewStringObj(msg , TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(msg , -1));
return res;
}
@@ -7283,7 +7283,7 @@ SimpleRedirect(
Tcl_IncrRefCount(pathPtr);
return pathPtr;
}
- origPtr = Tcl_NewStringObj(str+10, TCL_INDEX_NONE);
+ origPtr = Tcl_NewStringObj(str+10, -1);
Tcl_IncrRefCount(origPtr);
return origPtr;
}
@@ -7383,7 +7383,7 @@ SimpleListVolumes(void)
/* Add one new volume */
Tcl_Obj *retVal;
- retVal = Tcl_NewStringObj("simplefs:/", TCL_INDEX_NONE);
+ retVal = Tcl_NewStringObj("simplefs:/", -1);
Tcl_IncrRefCount(retVal);
return retVal;
}
@@ -7537,7 +7537,7 @@ TestFindFirstCmd(
if (objc > 2) {
(void) Tcl_GetIntFromObj(interp, objv[2], &len);
}
- Tcl_SetObjResult(interp, Tcl_NewStringObj(Tcl_UtfFindFirst(Tcl_GetString(objv[1]), len), TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(Tcl_UtfFindFirst(Tcl_GetString(objv[1]), len), -1));
}
return TCL_OK;
}
@@ -7559,7 +7559,7 @@ TestFindLastCmd(
if (objc > 2) {
(void) Tcl_GetIntFromObj(interp, objv[2], &len);
}
- Tcl_SetObjResult(interp, Tcl_NewStringObj(Tcl_UtfFindLast(Tcl_GetString(objv[1]), len), TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(Tcl_UtfFindLast(Tcl_GetString(objv[1]), len), -1));
}
return TCL_OK;
}
@@ -7637,7 +7637,7 @@ TestcpuidCmd(
status = TclWinCPUID(index, regs);
if (status != TCL_OK) {
Tcl_SetObjResult(interp,
- Tcl_NewStringObj("operation not available", TCL_INDEX_NONE));
+ Tcl_NewStringObj("operation not available", -1));
return status;
}
for (i=0 ; i<4 ; ++i) {
@@ -7683,7 +7683,7 @@ TestHashSystemHashCmd(
hPtr = Tcl_CreateHashEntry(&hash, INT2PTR(i), &isNew);
if (!isNew) {
Tcl_SetObjResult(interp, Tcl_NewWideIntObj(i));
- Tcl_AppendToObj(Tcl_GetObjResult(interp)," creation problem", TCL_INDEX_NONE);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp)," creation problem", -1);
Tcl_DeleteHashTable(&hash);
return TCL_ERROR;
}
@@ -7700,13 +7700,13 @@ TestHashSystemHashCmd(
hPtr = Tcl_FindHashEntry(&hash, (char *) INT2PTR(i));
if (hPtr == NULL) {
Tcl_SetObjResult(interp, Tcl_NewWideIntObj(i));
- Tcl_AppendToObj(Tcl_GetObjResult(interp)," lookup problem", TCL_INDEX_NONE);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp)," lookup problem", -1);
Tcl_DeleteHashTable(&hash);
return TCL_ERROR;
}
if (PTR2INT(Tcl_GetHashValue(hPtr)) != i+42) {
Tcl_SetObjResult(interp, Tcl_NewWideIntObj(i));
- Tcl_AppendToObj(Tcl_GetObjResult(interp)," value problem", TCL_INDEX_NONE);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp)," value problem", -1);
Tcl_DeleteHashTable(&hash);
return TCL_ERROR;
}
@@ -7889,15 +7889,15 @@ TestconcatobjCmd(
*/
Tcl_SetObjResult(interp,
- Tcl_NewStringObj("Tcl_ConcatObj is unsafe:", TCL_INDEX_NONE));
+ Tcl_NewStringObj("Tcl_ConcatObj is unsafe:", -1));
emptyPtr = Tcl_NewObj();
- list1Ptr = Tcl_NewStringObj("foo bar sum", TCL_INDEX_NONE);
+ list1Ptr = Tcl_NewStringObj("foo bar sum", -1);
Tcl_ListObjLength(NULL, list1Ptr, &len);
Tcl_InvalidateStringRep(list1Ptr);
- list2Ptr = Tcl_NewStringObj("eeny meeny", TCL_INDEX_NONE);
+ list2Ptr = Tcl_NewStringObj("eeny meeny", -1);
Tcl_ListObjLength(NULL, list2Ptr, &len);
Tcl_InvalidateStringRep(list2Ptr);
@@ -8460,7 +8460,7 @@ InterpCompiledVarResolver(
resVarInfo->vInfo.fetchProc = MyCompiledVarFetch;
resVarInfo->vInfo.deleteProc = MyCompiledVarFree;
resVarInfo->var = NULL;
- resVarInfo->nameObj = Tcl_NewStringObj(name, TCL_INDEX_NONE);
+ resVarInfo->nameObj = Tcl_NewStringObj(name, -1);
Tcl_IncrRefCount(resVarInfo->nameObj);
*rPtr = &resVarInfo->vInfo;
return TCL_OK;
@@ -8544,12 +8544,12 @@ int TestApplyLambdaObjCmd (
/* Create a lambda {{} {set a 42}} */
lambdaObjs[0] = Tcl_NewObj(); /* No parameters */
- lambdaObjs[1] = Tcl_NewStringObj("set a 42", TCL_INDEX_NONE); /* Body */
+ lambdaObjs[1] = Tcl_NewStringObj("set a 42", -1); /* Body */
lambdaObj = Tcl_NewListObj(2, lambdaObjs);
Tcl_IncrRefCount(lambdaObj);
/* Create the command "apply {{} {set a 42}" */
- evalObjs[0] = Tcl_NewStringObj("apply", TCL_INDEX_NONE);
+ evalObjs[0] = Tcl_NewStringObj("apply", -1);
Tcl_IncrRefCount(evalObjs[0]);
/*
* NOTE: IMPORTANT TO EXHIBIT THE BUG. We duplicate the lambda because
diff --git a/generic/tclTestObj.c b/generic/tclTestObj.c
index 42a96da..f2fb247 100644
--- a/generic/tclTestObj.c
+++ b/generic/tclTestObj.c
@@ -180,13 +180,13 @@ TestbignumobjCmd(
string = Tcl_GetString(objv[3]);
if (mp_init(&bignumValue) != MP_OKAY) {
Tcl_SetObjResult(interp,
- Tcl_NewStringObj("error in mp_init", TCL_INDEX_NONE));
+ Tcl_NewStringObj("error in mp_init", -1));
return TCL_ERROR;
}
if (mp_read_radix(&bignumValue, string, 10) != MP_OKAY) {
mp_clear(&bignumValue);
Tcl_SetObjResult(interp,
- Tcl_NewStringObj("error in mp_read_radix", TCL_INDEX_NONE));
+ Tcl_NewStringObj("error in mp_read_radix", -1));
return TCL_ERROR;
}
@@ -230,7 +230,7 @@ TestbignumobjCmd(
if (mp_mul_d(&bignumValue, 10, &bignumValue) != MP_OKAY) {
mp_clear(&bignumValue);
Tcl_SetObjResult(interp,
- Tcl_NewStringObj("error in mp_mul_d", TCL_INDEX_NONE));
+ Tcl_NewStringObj("error in mp_mul_d", -1));
return TCL_ERROR;
}
if (!Tcl_IsShared(varPtr[varIndex])) {
@@ -255,7 +255,7 @@ TestbignumobjCmd(
if (mp_div_d(&bignumValue, 10, &bignumValue, NULL) != MP_OKAY) {
mp_clear(&bignumValue);
Tcl_SetObjResult(interp,
- Tcl_NewStringObj("error in mp_div_d", TCL_INDEX_NONE));
+ Tcl_NewStringObj("error in mp_div_d", -1));
return TCL_ERROR;
}
if (!Tcl_IsShared(varPtr[varIndex])) {
@@ -280,7 +280,7 @@ TestbignumobjCmd(
if (mp_mod_2d(&bignumValue, 1, &bignumValue) != MP_OKAY) {
mp_clear(&bignumValue);
Tcl_SetObjResult(interp,
- Tcl_NewStringObj("error in mp_mod_2d", TCL_INDEX_NONE));
+ Tcl_NewStringObj("error in mp_mod_2d", -1));
return TCL_ERROR;
}
if (!Tcl_IsShared(varPtr[varIndex])) {
@@ -598,7 +598,7 @@ TestindexobjCmd(
}
if (objc < 5) {
- Tcl_AppendToObj(Tcl_GetObjResult(interp), "wrong # args", TCL_INDEX_NONE);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), "wrong # args", -1);
return TCL_ERROR;
}
@@ -738,7 +738,7 @@ TestintobjCmd(
return TCL_ERROR;
}
Tcl_AppendToObj(Tcl_GetObjResult(interp),
- ((wideValue == WIDE_MAX)? "1" : "0"), TCL_INDEX_NONE);
+ ((wideValue == WIDE_MAX)? "1" : "0"), -1);
} else if (strcmp(subCmd, "get") == 0) {
if (objc != 3) {
goto wrongNumArgs;
@@ -754,7 +754,7 @@ TestintobjCmd(
if (CheckIfVarUnset(interp, varPtr,varIndex)) {
return TCL_ERROR;
}
- Tcl_AppendToObj(Tcl_GetObjResult(interp), Tcl_GetString(varPtr[varIndex]), TCL_INDEX_NONE);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), Tcl_GetString(varPtr[varIndex]), -1);
} else if (strcmp(subCmd, "inttoobigtest") == 0) {
/*
* If long ints have more bits than ints on this platform, verify that
@@ -767,7 +767,7 @@ TestintobjCmd(
goto wrongNumArgs;
}
#if (INT_MAX == LONG_MAX) /* int is same size as long int */
- Tcl_AppendToObj(Tcl_GetObjResult(interp), "1", TCL_INDEX_NONE);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), "1", -1);
#else
if ((varPtr[varIndex] != NULL) && !Tcl_IsShared(varPtr[varIndex])) {
Tcl_SetWideIntObj(varPtr[varIndex], LONG_MAX);
@@ -776,10 +776,10 @@ TestintobjCmd(
}
if (Tcl_GetIntFromObj(interp, varPtr[varIndex], &i) != TCL_OK) {
Tcl_ResetResult(interp);
- Tcl_AppendToObj(Tcl_GetObjResult(interp), "1", TCL_INDEX_NONE);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), "1", -1);
return TCL_OK;
}
- Tcl_AppendToObj(Tcl_GetObjResult(interp), "0", TCL_INDEX_NONE);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), "0", -1);
#endif
} else if (strcmp(subCmd, "mult10") == 0) {
if (objc != 3) {
@@ -1104,7 +1104,7 @@ TestobjCmd(
const char *typeName;
if (objv[2]->typePtr == NULL) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj("none", TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("none", -1));
} else {
typeName = objv[2]->typePtr->name;
if (!strcmp(typeName, "utf32string"))
@@ -1112,7 +1112,7 @@ TestobjCmd(
#ifndef TCL_WIDE_INT_IS_LONG
else if (!strcmp(typeName, "wideInt")) typeName = "int";
#endif
- Tcl_SetObjResult(interp, Tcl_NewStringObj(typeName, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(typeName, -1));
}
}
return TCL_OK;
@@ -1206,15 +1206,15 @@ TestobjCmd(
goto wrongNumArgs;
}
if (varPtr[varIndex]->typePtr == NULL) { /* a string! */
- Tcl_AppendToObj(Tcl_GetObjResult(interp), "string", TCL_INDEX_NONE);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), "string", -1);
#ifndef TCL_WIDE_INT_IS_LONG
} else if (!strcmp(varPtr[varIndex]->typePtr->name, "wideInt")) {
Tcl_AppendToObj(Tcl_GetObjResult(interp),
- "int", TCL_INDEX_NONE);
+ "int", -1);
#endif
} else {
Tcl_AppendToObj(Tcl_GetObjResult(interp),
- varPtr[varIndex]->typePtr->name, TCL_INDEX_NONE);
+ varPtr[varIndex]->typePtr->name, -1);
}
break;
default:
@@ -1345,7 +1345,7 @@ TeststringobjCmd(
if (CheckIfVarUnset(interp, varPtr, varIndex)) {
return TCL_ERROR;
}
- Tcl_AppendToObj(Tcl_GetObjResult(interp), Tcl_GetString(varPtr[varIndex]), TCL_INDEX_NONE);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), Tcl_GetString(varPtr[varIndex]), -1);
break;
case 4: /* length */
if (objc != 3) {
@@ -1458,7 +1458,7 @@ TeststringobjCmd(
}
if ((length < 0) || ((Tcl_WideUInt)length > (Tcl_WideUInt)size)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "index value out of range", TCL_INDEX_NONE));
+ "index value out of range", -1));
return TCL_ERROR;
}
@@ -1489,7 +1489,7 @@ TeststringobjCmd(
}
if ((length < 0) || ((Tcl_WideUInt)length > (Tcl_WideUInt)size)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "index value out of range", TCL_INDEX_NONE));
+ "index value out of range", -1));
return TCL_ERROR;
}
@@ -1583,7 +1583,7 @@ GetVariableIndex(
}
if (index < 0 || index >= NUMBER_OF_OBJECT_VARS) {
Tcl_ResetResult(interp);
- Tcl_AppendToObj(Tcl_GetObjResult(interp), "bad variable index", TCL_INDEX_NONE);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), "bad variable index", -1);
return TCL_ERROR;
}
@@ -1620,7 +1620,7 @@ CheckIfVarUnset(
sprintf(buf, "variable %" TCL_Z_MODIFIER "u is unset (NULL)", varIndex);
Tcl_ResetResult(interp);
- Tcl_AppendToObj(Tcl_GetObjResult(interp), buf, TCL_INDEX_NONE);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), buf, -1);
return 1;
}
return 0;
diff --git a/generic/tclThread.c b/generic/tclThread.c
index 70a2b05..b72de4a 100644
--- a/generic/tclThread.c
+++ b/generic/tclThread.c
@@ -61,7 +61,7 @@ static void RememberSyncObject(void *objPtr,
void *
Tcl_GetThreadData(
Tcl_ThreadDataKey *keyPtr, /* Identifier for the data chunk */
- size_t size) /* Size of storage block */
+ Tcl_Size size) /* Size of storage block */
{
void *result;
#if TCL_THREADS
diff --git a/generic/tclThreadTest.c b/generic/tclThreadTest.c
index 5781329..d371480 100644
--- a/generic/tclThreadTest.c
+++ b/generic/tclThreadTest.c
@@ -654,10 +654,10 @@ ThreadErrorProc(
errorInfo = Tcl_GetVar2(interp, "errorInfo", NULL, TCL_GLOBAL_ONLY);
if (errorProcString == NULL) {
errChannel = Tcl_GetStdChannel(TCL_STDERR);
- Tcl_WriteChars(errChannel, "Error from thread ", TCL_INDEX_NONE);
- Tcl_WriteChars(errChannel, buf, TCL_INDEX_NONE);
+ Tcl_WriteChars(errChannel, "Error from thread ", -1);
+ Tcl_WriteChars(errChannel, buf, -1);
Tcl_WriteChars(errChannel, "\n", 1);
- Tcl_WriteChars(errChannel, errorInfo, TCL_INDEX_NONE);
+ Tcl_WriteChars(errChannel, errorInfo, -1);
Tcl_WriteChars(errChannel, "\n", 1);
} else {
argv[0] = errorProcString;
@@ -982,7 +982,7 @@ ThreadCancel(
Tcl_MutexUnlock(&threadMutex);
Tcl_ResetResult(interp);
return Tcl_CancelEval(tsdPtr->interp,
- (result != NULL) ? Tcl_NewStringObj(result, TCL_INDEX_NONE) : NULL, 0, flags);
+ (result != NULL) ? Tcl_NewStringObj(result, -1) : NULL, 0, flags);
}
/*
diff --git a/generic/tclTimer.c b/generic/tclTimer.c
index 3b4741e..70c7b6a 100644
--- a/generic/tclTimer.c
+++ b/generic/tclTimer.c
@@ -974,7 +974,7 @@ Tcl_AfterObjCmd(
Tcl_ListObjAppendElement(interp, resultListPtr,
afterPtr->commandPtr);
Tcl_ListObjAppendElement(interp, resultListPtr, Tcl_NewStringObj(
- (afterPtr->token == NULL) ? "idle" : "timer", TCL_INDEX_NONE));
+ (afterPtr->token == NULL) ? "idle" : "timer", -1));
Tcl_SetObjResult(interp, resultListPtr);
}
break;
diff --git a/generic/tclUtf.c b/generic/tclUtf.c
index 1fb8847..bc4602f 100644
--- a/generic/tclUtf.c
+++ b/generic/tclUtf.c
@@ -105,7 +105,7 @@ static int Invalid(const char *src);
*---------------------------------------------------------------------------
*/
-size_t
+int
TclUtfCount(
int ch) /* The Unicode character whose size is returned. */
{
@@ -205,7 +205,7 @@ Invalid(
*/
#undef Tcl_UniCharToUtf
-size_t
+Tcl_Size
Tcl_UniCharToUtf(
int ch, /* The Tcl_UniChar to be stored in the
* buffer. Can be or'ed with flag TCL_COMBINE
@@ -318,13 +318,14 @@ three:
char *
Tcl_UniCharToUtfDString(
const int *uniStr, /* Unicode string to convert to UTF-8. */
- size_t uniLength, /* Length of Unicode string. */
+ Tcl_Size uniLength, /* Length of Unicode string. Negative for nul
+ * nul terminated string */
Tcl_DString *dsPtr) /* UTF-8 representation of string is appended
* to this previously initialized DString. */
{
const int *w, *wEnd;
char *p, *string;
- size_t oldLength;
+ Tcl_Size oldLength;
/*
* UTF-8 string length in bytes will be <= Unicode string length * 4.
@@ -333,7 +334,7 @@ Tcl_UniCharToUtfDString(
if (uniStr == NULL) {
return NULL;
}
- if (uniLength == TCL_INDEX_NONE) {
+ if (uniLength < 0) {
uniLength = 0;
w = uniStr;
while (*w != '\0') {
@@ -359,7 +360,7 @@ Tcl_UniCharToUtfDString(
char *
Tcl_Char16ToUtfDString(
const unsigned short *uniStr,/* Utf-16 string to convert to UTF-8. */
- size_t uniLength, /* Length of Utf-16 string. */
+ Tcl_Size uniLength, /* Length of Utf-16 string. */
Tcl_DString *dsPtr) /* UTF-8 representation of string is appended
* to this previously initialized DString. */
{
@@ -375,7 +376,7 @@ Tcl_Char16ToUtfDString(
if (uniStr == NULL) {
return NULL;
}
- if (uniLength == TCL_INDEX_NONE) {
+ if (uniLength < 0) {
uniLength = 0;
w = uniStr;
@@ -453,7 +454,7 @@ static const unsigned short cp1252[32] = {
};
#undef Tcl_UtfToUniChar
-size_t
+Tcl_Size
Tcl_UtfToUniChar(
const char *src, /* The UTF-8 string. */
int *chPtr)/* Filled with the Unicode character represented by
@@ -536,7 +537,7 @@ Tcl_UtfToUniChar(
return 1;
}
-size_t
+Tcl_Size
Tcl_UtfToChar16(
const char *src, /* The UTF-8 string. */
unsigned short *chPtr)/* Filled with the Tcl_UniChar represented by
@@ -657,7 +658,7 @@ Tcl_UtfToChar16(
int *
Tcl_UtfToUniCharDString(
const char *src, /* UTF-8 string to convert to Unicode. */
- size_t length, /* Length of UTF-8 string in bytes, or -1 for
+ Tcl_Size length, /* Length of UTF-8 string in bytes, or -1 for
* strlen(). */
Tcl_DString *dsPtr) /* Unicode representation of string is
* appended to this previously initialized
@@ -665,7 +666,7 @@ Tcl_UtfToUniCharDString(
{
int ch = 0, *w, *wString;
const char *p;
- size_t oldLength;
+ Tcl_Size oldLength;
/* Pointer to the end of string. Never read endPtr[0] */
const char *endPtr = src + length;
/* Pointer to last byte where optimization still can be used */
@@ -674,7 +675,7 @@ Tcl_UtfToUniCharDString(
if (src == NULL) {
return NULL;
}
- if (length == TCL_INDEX_NONE) {
+ if (length < 0) {
length = strlen(src);
}
@@ -714,7 +715,7 @@ Tcl_UtfToUniCharDString(
unsigned short *
Tcl_UtfToChar16DString(
const char *src, /* UTF-8 string to convert to Unicode. */
- size_t length, /* Length of UTF-8 string in bytes, or -1 for
+ Tcl_Size length, /* Length of UTF-8 string in bytes, or -1 for
* strlen(). */
Tcl_DString *dsPtr) /* Unicode representation of string is
* appended to this previously initialized
@@ -722,7 +723,7 @@ Tcl_UtfToChar16DString(
{
unsigned short ch = 0, *w, *wString;
const char *p;
- size_t oldLength;
+ Tcl_Size oldLength;
/* Pointer to the end of string. Never read endPtr[0] */
const char *endPtr = src + length;
/* Pointer to last byte where optimization still can be used */
@@ -731,7 +732,7 @@ Tcl_UtfToChar16DString(
if (src == NULL) {
return NULL;
}
- if (length == TCL_INDEX_NONE) {
+ if (length < 0) {
length = strlen(src);
}
@@ -792,7 +793,7 @@ int
Tcl_UtfCharComplete(
const char *src, /* String to check if first few bytes contain
* a complete UTF-8 character. */
- size_t length) /* Length of above string in bytes. */
+ Tcl_Size length) /* Length of above string in bytes. */
{
return length >= complete[UCHAR(*src)];
}
@@ -815,16 +816,16 @@ Tcl_UtfCharComplete(
*---------------------------------------------------------------------------
*/
-size_t
+Tcl_Size
Tcl_NumUtfChars(
const char *src, /* The UTF-8 string to measure. */
- size_t length) /* The length of the string in bytes, or
- * TCL_INDEX_NONE for strlen(src). */
+ Tcl_Size length) /* The length of the string in bytes, or
+ * negative value for strlen(src). */
{
Tcl_UniChar ch = 0;
- size_t i = 0;
+ Tcl_Size i = 0;
- if (length == TCL_INDEX_NONE) {
+ if (length < 0) {
/* string is NUL-terminated, so TclUtfToUniChar calls are safe. */
while (*src != '\0') {
src += TclUtfToUniChar(src, &ch);
@@ -867,16 +868,16 @@ Tcl_NumUtfChars(
return i;
}
-size_t
+Tcl_Size
TclNumUtfChars(
const char *src, /* The UTF-8 string to measure. */
- size_t length) /* The length of the string in bytes, or
- * TCL_INDEX_NONE for strlen(src). */
+ Tcl_Size length) /* The length of the string in bytes, or
+ * negative for strlen(src). */
{
unsigned short ch = 0;
- size_t i = 0;
+ Tcl_Size i = 0;
- if (length == TCL_INDEX_NONE) {
+ if (length < 0) {
/* string is NUL-terminated, so TclUtfToUniChar calls are safe. */
while (*src != '\0') {
src += Tcl_UtfToChar16(src, &ch);
@@ -1194,12 +1195,12 @@ Tcl_UtfPrev(
int
Tcl_UniCharAtIndex(
const char *src, /* The UTF-8 string to dereference. */
- size_t index) /* The position of the desired character. */
+ Tcl_Size index) /* The position of the desired character. */
{
Tcl_UniChar ch = 0;
int i = 0;
- if (index == TCL_INDEX_NONE) {
+ if (index < 0) {
return -1;
}
while (index--) {
@@ -1238,11 +1239,11 @@ Tcl_UniCharAtIndex(
const char *
Tcl_UtfAtIndex(
const char *src, /* The UTF-8 string. */
- size_t index) /* The position of the desired character. */
+ Tcl_Size index) /* The position of the desired character. */
{
int ch = 0;
- if (index != TCL_INDEX_NONE) {
+ if (index > 0) {
while (index--) {
/* Make use of the #undef Tcl_UtfToUniChar above, which already handles UCS4. */
src += Tcl_UtfToUniChar(src, &ch);
@@ -1254,12 +1255,12 @@ Tcl_UtfAtIndex(
const char *
TclUtfAtIndex(
const char *src, /* The UTF-8 string. */
- size_t index) /* The position of the desired character. */
+ Tcl_Size index) /* The position of the desired character. */
{
unsigned short ch = 0;
- size_t len = 0;
+ Tcl_Size len = 0;
- if (index != TCL_INDEX_NONE) {
+ if (index > 0) {
while (index--) {
src += (len = Tcl_UtfToChar16(src, &ch));
}
@@ -1297,7 +1298,7 @@ TclUtfAtIndex(
*---------------------------------------------------------------------------
*/
-size_t
+Tcl_Size
Tcl_UtfBackslash(
const char *src, /* Points to the backslash character of a
* backslash sequence. */
@@ -1307,7 +1308,8 @@ Tcl_UtfBackslash(
* backslash sequence. */
{
#define LINE_LENGTH 128
- size_t numRead, result;
+ Tcl_Size numRead;
+ int result;
result = TclParseBackslash(src, LINE_LENGTH, &numRead, dst);
if (numRead == LINE_LENGTH) {
@@ -1341,13 +1343,13 @@ Tcl_UtfBackslash(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
Tcl_UtfToUpper(
char *str) /* String to convert in place. */
{
int ch, upChar;
char *src, *dst;
- size_t len;
+ Tcl_Size len;
/*
* Iterate over the string until we hit the terminating null.
@@ -1394,13 +1396,13 @@ Tcl_UtfToUpper(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
Tcl_UtfToLower(
char *str) /* String to convert in place. */
{
int ch, lowChar;
char *src, *dst;
- size_t len;
+ Tcl_Size len;
/*
* Iterate over the string until we hit the terminating null.
@@ -1448,13 +1450,13 @@ Tcl_UtfToLower(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
Tcl_UtfToTitle(
char *str) /* String to convert in place. */
{
int ch, titleChar, lowChar;
char *src, *dst;
- size_t len;
+ Tcl_Size len;
/*
* Capitalize the first character and then lowercase the rest of the
@@ -1870,11 +1872,11 @@ Tcl_UniCharToTitle(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
Tcl_Char16Len(
const unsigned short *uniStr) /* Unicode string to find length of. */
{
- size_t len = 0;
+ Tcl_Size len = 0;
while (*uniStr != '\0') {
len++;
@@ -1901,11 +1903,11 @@ Tcl_Char16Len(
*/
#undef Tcl_UniCharLen
-size_t
+Tcl_Size
Tcl_UniCharLen(
const int *uniStr) /* Unicode string to find length of. */
{
- size_t len = 0;
+ Tcl_Size len = 0;
while (*uniStr != '\0') {
len++;
@@ -2563,10 +2565,10 @@ TclUniCharCaseMatch(
int
TclUniCharMatch(
const Tcl_UniChar *string, /* Unicode String. */
- size_t strLen, /* Length of String */
+ Tcl_Size strLen, /* Length of String */
const Tcl_UniChar *pattern, /* Pattern, which may contain special
* characters. */
- size_t ptnLen, /* Length of Pattern */
+ Tcl_Size ptnLen, /* Length of Pattern */
int nocase) /* 0 for case sensitive, 1 for insensitive */
{
const Tcl_UniChar *stringEnd, *patternEnd;
diff --git a/generic/tclUtil.c b/generic/tclUtil.c
index d79fd97..7d8f1b0 100644
--- a/generic/tclUtil.c
+++ b/generic/tclUtil.c
@@ -12,6 +12,7 @@
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*/
+#include <assert.h>
#include "tclInt.h"
#include "tclParse.h"
#include "tclStringTrim.h"
@@ -102,14 +103,14 @@ static void ClearHash(Tcl_HashTable *tablePtr);
static void FreeProcessGlobalValue(void *clientData);
static void FreeThreadHash(void *clientData);
static int GetEndOffsetFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr,
- size_t endValue, Tcl_WideInt *indexPtr);
+ Tcl_WideInt endValue, Tcl_WideInt *indexPtr);
static Tcl_HashTable * GetThreadHash(Tcl_ThreadDataKey *keyPtr);
static int GetWideForIndex(Tcl_Interp *interp, Tcl_Obj *objPtr,
- size_t endValue, Tcl_WideInt *widePtr);
+ Tcl_WideInt endValue, Tcl_WideInt *widePtr);
static int FindElement(Tcl_Interp *interp, const char *string,
- size_t stringLength, const char *typeStr,
+ Tcl_Size stringLength, const char *typeStr,
const char *typeCode, const char **elementPtr,
- const char **nextPtr, size_t *sizePtr,
+ const char **nextPtr, Tcl_Size *sizePtr,
int *literalPtr);
/*
* The following is the Tcl object type definition for an object that
@@ -133,7 +134,7 @@ static const TclObjTypeWithAbstractList endOffsetType = {
)}
};
-size_t
+Tcl_Size
TclLengthOne(
TCL_UNUSED(Tcl_Obj *))
{
@@ -394,13 +395,13 @@ TclLengthOne(
*----------------------------------------------------------------------
*/
-int
+Tcl_Size
TclMaxListLength(
const char *bytes,
- size_t numBytes,
+ Tcl_Size numBytes,
const char **endPtr)
{
- size_t count = 0;
+ Tcl_Size count = 0;
if ((numBytes == 0) || ((numBytes == TCL_INDEX_NONE) && (*bytes == '\0'))) {
/* Empty string case - quick exit */
@@ -503,13 +504,13 @@ TclFindElement(
const char *list, /* Points to the first byte of a string
* containing a Tcl list with zero or more
* elements (possibly in braces). */
- size_t listLength, /* Number of bytes in the list's string. */
+ Tcl_Size listLength, /* Number of bytes in the list's string. */
const char **elementPtr, /* Where to put address of first significant
* character in first element of list. */
const char **nextPtr, /* Fill in with location of character just
* after all white space following end of
* argument (next arg or end of list). */
- size_t *sizePtr, /* If non-zero, fill in with size of
+ Tcl_Size *sizePtr, /* If non-zero, fill in with size of
* element. */
int *literalPtr) /* If non-zero, fill in with non-zero/zero to
* indicate that the substring of *sizePtr
@@ -531,14 +532,14 @@ TclFindDictElement(
* containing a Tcl dictionary with zero or
* more keys and values (possibly in
* braces). */
- size_t dictLength, /* Number of bytes in the dict's string. */
+ Tcl_Size dictLength, /* Number of bytes in the dict's string. */
const char **elementPtr, /* Where to put address of first significant
* character in the first element (i.e., key
* or value) of dict. */
const char **nextPtr, /* Fill in with location of character just
* after all white space following end of
* element (next arg or end of list). */
- size_t *sizePtr, /* If non-zero, fill in with size of
+ Tcl_Size *sizePtr, /* If non-zero, fill in with size of
* element. */
int *literalPtr) /* If non-zero, fill in with non-zero/zero to
* indicate that the substring of *sizePtr
@@ -560,7 +561,7 @@ FindElement(
* containing a Tcl list or dictionary with
* zero or more elements (possibly in
* braces). */
- size_t stringLength, /* Number of bytes in the string. */
+ Tcl_Size stringLength, /* Number of bytes in the string. */
const char *typeStr, /* The name of the type of thing we are
* parsing, for error messages. */
const char *typeCode, /* The type code for thing we are parsing, for
@@ -570,7 +571,7 @@ FindElement(
const char **nextPtr, /* Fill in with location of character just
* after all white space following end of
* argument (next arg or end of list/dict). */
- size_t *sizePtr, /* If non-zero, fill in with size of
+ Tcl_Size *sizePtr, /* If non-zero, fill in with size of
* element. */
int *literalPtr) /* If non-zero, fill in with non-zero/zero to
* indicate that the substring of *sizePtr
@@ -582,10 +583,10 @@ FindElement(
const char *p = string;
const char *elemStart; /* Points to first byte of first element. */
const char *limit; /* Points just after list/dict's last byte. */
- size_t openBraces = 0; /* Brace nesting level during parse. */
+ Tcl_Size openBraces = 0; /* Brace nesting level during parse. */
int inQuotes = 0;
- size_t size = 0;
- size_t numChars;
+ Tcl_Size size = 0;
+ Tcl_Size numChars;
int literal = 1;
const char *p2;
@@ -793,21 +794,21 @@ FindElement(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
TclCopyAndCollapse(
- size_t count, /* Number of byte to copy from src. */
+ Tcl_Size count, /* Number of byte to copy from src. */
const char *src, /* Copy from here... */
char *dst) /* ... to here. */
{
- size_t newCount = 0;
+ Tcl_Size newCount = 0;
while (count > 0) {
char c = *src;
if (c == '\\') {
char buf[4] = "";
- size_t numRead;
- size_t backslashCount = TclParseBackslash(src, count, &numRead, buf);
+ Tcl_Size numRead;
+ Tcl_Size backslashCount = TclParseBackslash(src, count, &numRead, buf);
memcpy(dst, buf, backslashCount);
dst += backslashCount;
@@ -860,7 +861,7 @@ Tcl_SplitList(
Tcl_Interp *interp, /* Interpreter to use for error reporting. If
* NULL, no error message is left. */
const char *list, /* Pointer to string with list structure. */
- size_t *argcPtr, /* Pointer to location to fill in with the
+ Tcl_Size *argcPtr, /* Pointer to location to fill in with the
* number of elements in the list. */
const char ***argvPtr) /* Pointer to place to store pointer to array
* of pointers to list elements. */
@@ -868,7 +869,7 @@ Tcl_SplitList(
const char **argv, *end, *element;
char *p;
int result;
- size_t length, size, i, elSize;
+ Tcl_Size length, size, i, elSize;
/*
* Allocate enough space to work in. A (const char *) for each (possible)
@@ -901,7 +902,7 @@ Tcl_SplitList(
Tcl_Free((void *)argv);
if (interp != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "internal error in Tcl_SplitList", TCL_INDEX_NONE));
+ "internal error in Tcl_SplitList", -1));
Tcl_SetErrorCode(interp, "TCL", "INTERNAL", "Tcl_SplitList",
NULL);
}
@@ -945,7 +946,7 @@ Tcl_SplitList(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
Tcl_ScanElement(
const char *src, /* String to convert to list element. */
int *flagPtr) /* Where to store information to guide
@@ -977,15 +978,15 @@ Tcl_ScanElement(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
Tcl_ScanCountedElement(
const char *src, /* String to convert to Tcl list element. */
- size_t length, /* Number of bytes in src, or TCL_INDEX_NONE. */
+ Tcl_Size length, /* Number of bytes in src, or TCL_INDEX_NONE. */
int *flagPtr) /* Where to store information to guide
* Tcl_ConvertElement. */
{
char flags = CONVERT_ANY;
- size_t numBytes = TclScanElement(src, length, &flags);
+ Tcl_Size numBytes = TclScanElement(src, length, &flags);
*flagPtr = flags;
return numBytes;
@@ -1024,12 +1025,12 @@ Tcl_ScanCountedElement(
TCL_HASH_TYPE
TclScanElement(
const char *src, /* String to convert to Tcl list element. */
- size_t length, /* Number of bytes in src, or TCL_INDEX_NONE. */
+ Tcl_Size length, /* Number of bytes in src, or TCL_INDEX_NONE. */
char *flagPtr) /* Where to store information to guide
* Tcl_ConvertElement. */
{
const char *p = src;
- size_t nestingLevel = 0; /* Brace nesting count */
+ Tcl_Size nestingLevel = 0; /* Brace nesting count */
int forbidNone = 0; /* Do not permit CONVERT_NONE mode. Something
* needs protection or escape. */
int requireEscape = 0; /* Force use of CONVERT_ESCAPE mode. For some
@@ -1143,13 +1144,13 @@ TclScanElement(
*/
requireEscape = 1;
- length -= (length+1 > 1);
+ length -= (length > 0);
p++;
break;
}
if ((p[1] == '{') || (p[1] == '}') || (p[1] == '\\')) {
extra++; /* Escape sequences all one byte longer. */
- length -= (length+1 > 1);
+ length -= (length > 0);
p++;
}
forbidNone = 1;
@@ -1174,7 +1175,7 @@ TclScanElement(
break;
}
}
- length -= (length+1 > 1);
+ length -= (length > 0);
p++;
}
@@ -1322,7 +1323,7 @@ TclScanElement(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
Tcl_ConvertElement(
const char *src, /* Source information for list element. */
char *dst, /* Place to put list-ified element. */
@@ -1352,14 +1353,14 @@ Tcl_ConvertElement(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
Tcl_ConvertCountedElement(
const char *src, /* Source information for list element. */
- size_t length, /* Number of bytes in src, or TCL_INDEX_NONE. */
+ Tcl_Size length, /* Number of bytes in src, or TCL_INDEX_NONE. */
char *dst, /* Place to put list-ified element. */
int flags) /* Flags produced by Tcl_ScanElement. */
{
- size_t numBytes = TclConvertElement(src, length, dst, flags);
+ Tcl_Size numBytes = TclConvertElement(src, length, dst, flags);
dst[numBytes] = '\0';
return numBytes;
}
@@ -1385,10 +1386,10 @@ Tcl_ConvertCountedElement(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
TclConvertElement(
const char *src, /* Source information for list element. */
- size_t length, /* Number of bytes in src, or TCL_INDEX_NONE. */
+ Tcl_Size length, /* Number of bytes in src, or TCL_INDEX_NONE. */
char *dst, /* Place to put list-ified element. */
int flags) /* Flags produced by Tcl_ScanElement. */
{
@@ -1423,7 +1424,7 @@ TclConvertElement(
p[1] = '#';
p += 2;
src++;
- length -= (length+1 > 1);
+ length -= (length > 0);
} else {
conversion = CONVERT_BRACE;
}
@@ -1473,7 +1474,7 @@ TclConvertElement(
* Formatted string is original string converted to escape sequences.
*/
- for ( ; length; src++, length -= (length+1 > 1)) {
+ for ( ; length; src++, length -= (length > 0)) {
switch (*src) {
case ']':
case '[':
@@ -1527,7 +1528,7 @@ TclConvertElement(
continue;
case '\0':
if (length == TCL_INDEX_NONE) {
- return (size_t)(p - dst);
+ return (p - dst);
}
/*
@@ -1543,7 +1544,7 @@ TclConvertElement(
*p = *src;
p++;
}
- return (size_t)(p - dst);
+ return (p - dst);
}
/*
@@ -1568,12 +1569,12 @@ TclConvertElement(
char *
Tcl_Merge(
- size_t argc, /* How many strings to merge. */
+ Tcl_Size argc, /* How many strings to merge. */
const char *const *argv) /* Array of string values. */
{
#define LOCAL_SIZE 64
char localFlags[LOCAL_SIZE], *flagPtr = NULL;
- size_t i, bytesNeeded = 0;
+ Tcl_Size i, bytesNeeded = 0;
char *result, *dst;
/*
@@ -1581,7 +1582,7 @@ Tcl_Merge(
* simpler.
*/
- if (argc == 0) {
+ if (argc <= 0) {
result = (char *)Tcl_Alloc(1);
result[0] = '\0';
return result;
@@ -1639,14 +1640,14 @@ Tcl_Merge(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
TclTrimRight(
const char *bytes, /* String to be trimmed... */
- size_t numBytes, /* ...and its length in bytes */
+ Tcl_Size numBytes, /* ...and its length in bytes */
/* Calls to TclUtfToUniChar() in this routine
* rely on (bytes[numBytes] == '\0'). */
const char *trim, /* String of trim characters... */
- size_t numTrim) /* ...and its length in bytes */
+ Tcl_Size numTrim) /* ...and its length in bytes */
/* Calls to TclUtfToUniChar() in this routine
* rely on (trim[numTrim] == '\0'). */
{
@@ -1664,7 +1665,7 @@ TclTrimRight(
do {
const char *q = trim;
- size_t pInc = 0, bytesLeft = numTrim;
+ Tcl_Size pInc = 0, bytesLeft = numTrim;
pp = Tcl_UtfPrev(p, bytes);
do {
@@ -1718,14 +1719,14 @@ TclTrimRight(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
TclTrimLeft(
const char *bytes, /* String to be trimmed... */
- size_t numBytes, /* ...and its length in bytes */
+ Tcl_Size numBytes, /* ...and its length in bytes */
/* Calls to TclUtfToUniChar() in this routine
* rely on (bytes[numBytes] == '\0'). */
const char *trim, /* String of trim characters... */
- size_t numTrim) /* ...and its length in bytes */
+ Tcl_Size numTrim) /* ...and its length in bytes */
/* Calls to TclUtfToUniChar() in this routine
* rely on (trim[numTrim] == '\0'). */
{
@@ -1742,16 +1743,16 @@ TclTrimLeft(
*/
do {
- size_t pInc = TclUtfToUCS4(p, &ch1);
+ Tcl_Size pInc = TclUtfToUCS4(p, &ch1);
const char *q = trim;
- size_t bytesLeft = numTrim;
+ Tcl_Size bytesLeft = numTrim;
/*
* Inner loop: scan trim string for match to current character.
*/
do {
- size_t qInc = TclUtfToUCS4(q, &ch2);
+ Tcl_Size qInc = TclUtfToUCS4(q, &ch2);
if (ch1 == ch2) {
break;
@@ -1792,19 +1793,19 @@ TclTrimLeft(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
TclTrim(
const char *bytes, /* String to be trimmed... */
- size_t numBytes, /* ...and its length in bytes */
+ Tcl_Size numBytes, /* ...and its length in bytes */
/* Calls in this routine
* rely on (bytes[numBytes] == '\0'). */
const char *trim, /* String of trim characters... */
- size_t numTrim, /* ...and its length in bytes */
+ Tcl_Size numTrim, /* ...and its length in bytes */
/* Calls in this routine
* rely on (trim[numTrim] == '\0'). */
- size_t *trimRightPtr) /* Offset from the end of the string. */
+ Tcl_Size *trimRightPtr) /* Offset from the end of the string. */
{
- size_t trimLeft = 0, trimRight = 0;
+ Tcl_Size trimLeft = 0, trimRight = 0;
/* Empty strings -> nothing to do */
if ((numBytes > 0) && (numTrim > 0)) {
@@ -1856,10 +1857,10 @@ TclTrim(
char *
Tcl_Concat(
- size_t argc, /* Number of strings to concatenate. */
+ Tcl_Size argc, /* Number of strings to concatenate. */
const char *const *argv) /* Array of strings to concatenate. */
{
- size_t i, needSpace = 0, bytesNeeded = 0;
+ Tcl_Size i, needSpace = 0, bytesNeeded = 0;
char *result, *p;
/*
@@ -1878,16 +1879,27 @@ Tcl_Concat(
for (i = 0; i < argc; i++) {
bytesNeeded += strlen(argv[i]);
+ if (bytesNeeded < 0) {
+ Tcl_Panic("Tcl_Concat: max size of Tcl value exceeded");
+ }
}
/*
* All element bytes + (argc - 1) spaces + 1 terminating NULL.
*/
+ if (bytesNeeded + argc - 1 < 0) {
+ /*
+ * Panic test could be tighter, but not going to bother for this
+ * legacy routine.
+ */
+
+ Tcl_Panic("Tcl_Concat: max size of Tcl value exceeded");
+ }
result = (char *)Tcl_Alloc(bytesNeeded + argc);
for (p = result, i = 0; i < argc; i++) {
- size_t triml, trimr, elemLength;
+ Tcl_Size triml, trimr, elemLength;
const char *element;
element = argv[i];
@@ -1945,11 +1957,11 @@ Tcl_Concat(
Tcl_Obj *
Tcl_ConcatObj(
- size_t objc, /* Number of objects to concatenate. */
+ Tcl_Size objc, /* Number of objects to concatenate. */
Tcl_Obj *const objv[]) /* Array of objects to concatenate. */
{
int needSpace = 0;
- size_t i, bytesNeeded = 0, elemLength;
+ Tcl_Size i, bytesNeeded = 0, elemLength;
const char *element;
Tcl_Obj *objPtr, *resPtr;
@@ -2011,6 +2023,9 @@ Tcl_ConcatObj(
for (i = 0; i < objc; i++) {
element = Tcl_GetStringFromObj(objv[i], &elemLength);
+ if (bytesNeeded > (TCL_SIZE_MAX - elemLength)) {
+ break; /* Overflow. Do not preallocate. See comment below. */
+ }
bytesNeeded += elemLength;
}
@@ -2025,7 +2040,7 @@ Tcl_ConcatObj(
Tcl_SetObjLength(resPtr, 0);
for (i = 0; i < objc; i++) {
- size_t triml, trimr;
+ Tcl_Size triml, trimr;
element = Tcl_GetStringFromObj(objv[i], &elemLength);
@@ -2578,13 +2593,13 @@ Tcl_DStringAppend(
Tcl_DString *dsPtr, /* Structure describing dynamic string. */
const char *bytes, /* String to append. If length is
* TCL_INDEX_NONE then this must be null-terminated. */
- size_t length) /* Number of bytes from "bytes" to append. If
+ Tcl_Size length) /* Number of bytes from "bytes" to append. If
* TCL_INDEX_NONE, then append all of bytes, up to null
* at end. */
{
- size_t newSize;
+ Tcl_Size newSize;
- if (length == TCL_INDEX_NONE) {
+ if (length < 0) {
length = strlen(bytes);
}
newSize = length + dsPtr->length;
@@ -2603,7 +2618,7 @@ Tcl_DStringAppend(
memcpy(newString, dsPtr->string, dsPtr->length);
dsPtr->string = newString;
} else {
- size_t index = TCL_INDEX_NONE;
+ Tcl_Size index = TCL_INDEX_NONE;
/* See [16896d49fd] */
if (bytes >= dsPtr->string
@@ -2613,7 +2628,7 @@ Tcl_DStringAppend(
dsPtr->string = (char *)Tcl_Realloc(dsPtr->string, dsPtr->spaceAvl);
- if (index != TCL_INDEX_NONE) {
+ if (index >= 0) {
bytes = dsPtr->string + index;
}
}
@@ -2645,7 +2660,7 @@ TclDStringAppendObj(
Tcl_DString *dsPtr,
Tcl_Obj *objPtr)
{
- size_t length;
+ Tcl_Size length;
const char *bytes = Tcl_GetStringFromObj(objPtr, &length);
return Tcl_DStringAppend(dsPtr, bytes, length);
@@ -2688,7 +2703,7 @@ Tcl_DStringAppendElement(
int needSpace = TclNeedSpace(dsPtr->string, dst);
char flags = 0;
int quoteHash = 1;
- size_t newSize;
+ Tcl_Size newSize;
if (needSpace) {
/*
@@ -2789,9 +2804,9 @@ Tcl_DStringAppendElement(
void
Tcl_DStringSetLength(
Tcl_DString *dsPtr, /* Structure describing dynamic string. */
- size_t length) /* New length for dynamic string. */
+ Tcl_Size length) /* New length for dynamic string. */
{
- size_t newsize;
+ Tcl_Size newsize;
if (length >= dsPtr->spaceAvl) {
/*
@@ -3268,14 +3283,14 @@ TclNeedSpace(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
TclFormatInt(
char *buffer, /* Points to the storage into which the
* formatted characters are written. */
Tcl_WideInt n) /* The integer to format. */
{
Tcl_WideUInt intVal;
- size_t i = 0, numFormatted, j;
+ int i = 0, numFormatted, j;
static const char digits[] = "0123456789";
/*
@@ -3338,7 +3353,7 @@ GetWideForIndex(
* NULL, then no error message is left after
* errors. */
Tcl_Obj *objPtr, /* Points to the value to be parsed */
- size_t endValue, /* The value to be stored at *widePtr if
+ Tcl_WideInt endValue, /* The value to be stored at *widePtr if
* objPtr holds "end".
* NOTE: this value may be TCL_INDEX_NONE. */
Tcl_WideInt *widePtr) /* Location filled in with a wide integer
@@ -3375,11 +3390,18 @@ GetWideForIndex(
* object. The string value 'objPtr' is expected have the format
* integer([+-]integer)? or end([+-]integer)?.
*
- * Value
+ * If the computed index lies within the valid range of Tcl indices
+ * (0..TCL_SIZE_MAX) it is returned. Higher values are returned as
+ * TCL_SIZE_MAX. Negative values are returned as TCL_INDEX_NONE (-1).
+ *
+ * Callers should pass reasonable values for endValue - one in the
+ * valid index range or TCL_INDEX_NONE (-1), for example for an empty
+ * list.
+ *
+ * Results:
* TCL_OK
*
- * The index is stored at the address given by by 'indexPtr'. If
- * 'objPtr' has the value "end", the value stored is 'endValue'.
+ * The index is stored at the address given by by 'indexPtr'.
*
* TCL_ERROR
*
@@ -3387,10 +3409,9 @@ GetWideForIndex(
* 'interp' is non-NULL, an error message is left in the interpreter's
* result object.
*
- * Effect
+ * Side effects:
*
- * The object referenced by 'objPtr' is converted, as needed, to an
- * integer, wide integer, or end-based-index object.
+ * The internal representation contained within objPtr may shimmer.
*
*----------------------------------------------------------------------
*/
@@ -3402,9 +3423,8 @@ Tcl_GetIntForIndex(
* errors. */
Tcl_Obj *objPtr, /* Points to an object containing either "end"
* or an integer. */
- size_t endValue, /* The value to be stored at "indexPtr" if
- * "objPtr" holds "end". */
- size_t *indexPtr) /* Location filled in with an integer
+ Tcl_Size endValue, /* The value corresponding to the "end" index */
+ Tcl_Size *indexPtr) /* Location filled in with an integer
* representing an index. May be NULL.*/
{
Tcl_WideInt wide;
@@ -3413,16 +3433,18 @@ Tcl_GetIntForIndex(
return TCL_ERROR;
}
if (indexPtr != NULL) {
- if ((wide < 0) && (endValue < TCL_INDEX_END)) {
- *indexPtr = TCL_INDEX_NONE;
- } else if ((Tcl_WideUInt)wide > TCL_INDEX_END && (endValue < TCL_INDEX_END)) {
- *indexPtr = TCL_INDEX_END;
+ /* Note: check against TCL_SIZE_MAX needed for 32-bit builds */
+ if (wide >= 0 && wide <= TCL_SIZE_MAX) {
+ *indexPtr = (Tcl_Size)wide;
+ } else if (wide > TCL_SIZE_MAX) {
+ *indexPtr = TCL_SIZE_MAX;
} else {
- *indexPtr = (size_t) wide;
+ *indexPtr = TCL_INDEX_NONE;
}
}
return TCL_OK;
}
+
/*
*----------------------------------------------------------------------
*
@@ -3439,7 +3461,8 @@ Tcl_GetIntForIndex(
* -2: Index "end-1"
* -1: Index "end"
* 0: Index "0"
- * WIDE_MAX-1: Index "end+n", for any n > 1
+ * WIDE_MAX-1: Index "end+n", for any n > 1. Distinguish from end+1 for
+ * commands like lset.
* WIDE_MAX: Index "end+1"
*
* Results:
@@ -3455,7 +3478,7 @@ static int
GetEndOffsetFromObj(
Tcl_Interp *interp,
Tcl_Obj *objPtr, /* Pointer to the object to parse */
- size_t endValue, /* The value to be stored at "indexPtr" if
+ Tcl_WideInt endValue, /* The value to be stored at "widePtr" if
* "objPtr" holds "end". */
Tcl_WideInt *widePtr) /* Location filled in with an integer
* representing an index. */
@@ -3466,7 +3489,7 @@ GetEndOffsetFromObj(
while ((irPtr = TclFetchInternalRep(objPtr, &endOffsetType.objType)) == NULL) {
Tcl_ObjInternalRep ir;
- size_t length;
+ Tcl_Size length;
const char *bytes = Tcl_GetStringFromObj(objPtr, &length);
if (*bytes != 'e') {
@@ -3656,15 +3679,26 @@ GetEndOffsetFromObj(
offset = irPtr->wideValue;
if (offset == WIDE_MAX) {
+ /*
+ * Encodes end+1. This is distinguished from end+n as noted above
+ * NOTE: this may wrap around if the caller passes (as lset does)
+ * listLen-1 as endValue and and listLen is 0. The -1 will be
+ * interpreted as FF...FF and adding 1 will result in 0 which
+ * is what we want. 2's complements shenanigans but it is what
+ * it is ...
+ */
*widePtr = endValue + 1;
} else if (offset == WIDE_MIN) {
+ /* -1 - position before first */
*widePtr = -1;
} else if (offset < 0) {
- /* Different signs, sum cannot overflow */
+ /* end-(n-1) - Different signs, sum cannot overflow */
*widePtr = endValue + offset + 1;
} else if (offset < WIDE_MAX) {
+ /* 0:WIDE_MAX-1 - plain old index. */
*widePtr = offset;
} else {
+ /* Huh, what case remains here? */
*widePtr = WIDE_MAX;
}
return TCL_OK;
@@ -3689,19 +3723,26 @@ GetEndOffsetFromObj(
*----------------------------------------------------------------------
*
* TclIndexEncode --
+ * IMPORTANT: function only encodes indices in the range that fits within
+ * an "int" type. Do NOT change this as the byte code compiler and engine
+ * which call this function cannot handle wider index types. Indices
+ * outside the range will result in the function returning an error.
*
* Parse objPtr to determine if it is an index value. Two cases
* are possible. The value objPtr might be parsed as an absolute
- * index value in the C signed int range. Note that this includes
+ * index value in the Tcl_Size range. Note that this includes
* index values that are integers as presented and it includes index
- * arithmetic expressions. The absolute index values that can be
+ * arithmetic expressions.
+ *
+ * The largest string supported in Tcl 8 has byte length TCL_SIZE_MAX.
+ * This means the largest supported character length is also TCL_SIZE_MAX,
+ * and the index of the last character in a string of length TCL_SIZE_MAX
+ * is TCL_SIZE_MAX-1. Thus the absolute index values that can be
* directly meaningful as an index into either a list or a string are
- * those integer values >= TCL_INDEX_START (0)
- * and < INT_MAX.
- * The largest string supported in Tcl 8 has bytelength INT_MAX.
- * This means the largest supported character length is also INT_MAX,
- * and the index of the last character in a string of length INT_MAX
- * is INT_MAX-1.
+ * integer values in the range 0 to TCL_SIZE_MAX - 1.
+ *
+ * This function however can only handle integer indices in the range
+ * 0 : INT_MAX-1.
*
* Any absolute index value parsed outside that range is encoded
* using the before and after values passed in by the
@@ -3726,12 +3767,9 @@ GetEndOffsetFromObj(
* if the tokens "end-0x7FFFFFFF" or "end+-0x80000000" are parsed,
* they can be encoded with the before value.
*
- * These details will require re-examination whenever string and
- * list length limits are increased, but that will likely also
- * mean a revised routine capable of returning Tcl_WideInt values.
- *
* Returns:
- * TCL_OK if parsing succeeded, and TCL_ERROR if it failed.
+ * TCL_OK if parsing succeeded, and TCL_ERROR if it failed or the
+ * index does not fit in an int type.
*
* Side effects:
* When TCL_OK is returned, the encoded index value is written
@@ -3744,51 +3782,138 @@ int
TclIndexEncode(
Tcl_Interp *interp, /* For error reporting, may be NULL */
Tcl_Obj *objPtr, /* Index value to parse */
- size_t before, /* Value to return for index before beginning */
- size_t after, /* Value to return for index after end */
+ int before, /* Value to return for index before beginning */
+ int after, /* Value to return for index after end */
int *indexPtr) /* Where to write the encoded answer, not NULL */
{
Tcl_WideInt wide;
int idx;
+ const Tcl_WideInt ENDVALUE = 2 * (Tcl_WideInt) INT_MAX;
+
+ assert(ENDVALUE < WIDE_MAX);
+ if (TCL_OK != GetWideForIndex(interp, objPtr, ENDVALUE, &wide)) {
+ return TCL_ERROR;
+ }
+ /*
+ * We passed 2*INT_MAX as the "end value" to GetWideForIndex. The computed
+ * index will in one of the following ranges that need to be distinguished
+ * for encoding purposes in the following code.
+ * (1) 0:INT_MAX when
+ * (a) objPtr was a pure non-negative numeric value in that range
+ * (b) objPtr was a numeric computation M+/-N with a result in that range
+ * (c) objPtr was of the form end-N where N was in range INT_MAX:2*INT_MAX
+ * (2) INT_MAX+1:2*INT_MAX when
+ * (a,b) as above
+ * (c) objPtr was of the form end-N where N was in range 0:INT_MAX-1
+ * (3) 2*INT_MAX:WIDE_MAX when
+ * (a,b) as above
+ * (c) objPtr was of the form end+N
+ * (4) (2*INT_MAX)-TCL_SIZE_MAX : -1 when
+ * (a,b) as above
+ * (c) objPtr was of the form end-N where N was in the range 0:TCL_SIZE_MAX
+ * (5) WIDE_MIN:(2*INT_MAX)-TCL_SIZE_MAX
+ * (a,b) as above
+ * (c) objPtr was of the form end-N where N was > TCL_SIZE_MAX
+ *
+ * For all cases (b) and (c), the internal representation of objPtr
+ * will be shimmered to endOffsetType. That allows us to distinguish between
+ * (for example) 1a (encodable) and 1c (not encodable) though the computed
+ * index value is the same.
+ *
+ * Further note, the values TCL_SIZE_MAX < N < WIDE_MAX come into play
+ * only in the 32-bit builds as TCL_SIZE_MAX == WIDE_MAX for 64-bits.
+ */
- if (TCL_OK == GetWideForIndex(interp, objPtr, (unsigned)TCL_INDEX_END , &wide)) {
- const Tcl_ObjInternalRep *irPtr = TclFetchInternalRep(objPtr, &endOffsetType.objType);
- if (irPtr && irPtr->wideValue >= 0) {
- /* "int[+-]int" syntax, works the same here as "int" */
- irPtr = NULL;
+ const Tcl_ObjInternalRep *irPtr =
+ TclFetchInternalRep(objPtr, &endOffsetType.objType);
+
+ if (irPtr && irPtr->wideValue >= 0) {
+ /*
+ * "int[+-]int" syntax, works the same here as "int".
+ * Note same does not hold for negative integers.
+ * Distinguishes 1b and 1c where wide will be in 0:INT_MAX for
+ * both but irPtr->wideValue will be negative for 1c.
+ */
+ irPtr = NULL;
+ }
+
+ if (irPtr == NULL) {
+ /* objPtr can be treated as a purely numeric value. */
+
+ /*
+ * On 64-bit systems, indices in the range INT_MAX:TCL_SIZE_MAX are
+ * valid indices but are not in the encodable range. Thus an
+ * error is raised. On 32-bit systems, indices in that range indicate
+ * the position after the end and so do not raise an error.
+ */
+ if ((sizeof(int) != sizeof(size_t)) &&
+ (wide > INT_MAX) && (wide < WIDE_MAX-1)) {
+ /* 2(a,b) on 64-bit systems*/
+ goto rangeerror;
}
+ if (wide > INT_MAX) {
+ /*
+ * 3(a,b) on 64-bit systems and 2(a,b), 3(a,b) on 32-bit systems
+ * Because of the check above, this case holds for indices
+ * greater than INT_MAX on 32-bit systems and > TCL_SIZE_MAX
+ * on 64-bit systems. Always maps to the element after the end.
+ */
+ idx = after;
+ } else if (wide < 0) {
+ /* 4(a,b) (32-bit systems), 5(a,b) - before the beginning */
+ idx = before;
+ } else {
+ /* 1(a,b) Encodable range */
+ idx = (int)wide;
+ }
+ } else {
+ /* objPtr is not purely numeric (end etc.) */
+
/*
- * We parsed an end+offset index value.
- * wide holds the offset value in the range WIDE_MIN...WIDE_MAX.
+ * On 64-bit systems, indices in the range end-LIST_MAX:end-INT_MAX
+ * are valid indices (with max size strings/lists) but are not in
+ * the encodable range. Thus an error is raised. On 32-bit systems,
+ * indices in that range indicate the position before the beginning
+ * and so do not raise an error.
*/
- if ((irPtr ? ((wide < INT_MIN) && ((size_t)-wide <= LIST_MAX))
- : ((wide > INT_MAX) && ((size_t)wide <= LIST_MAX))) && (sizeof(int) != sizeof(size_t))) {
- if (interp) {
- Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "index \"%s\" out of range",
- TclGetString(objPtr)));
- Tcl_SetErrorCode(interp, "TCL", "VALUE", "INDEX"
- "OUTOFRANGE", NULL);
- }
- return TCL_ERROR;
- } else if (wide > (unsigned)(irPtr ? TCL_INDEX_END : INT_MAX)) {
+ if ((sizeof(int) != sizeof(size_t)) &&
+ (wide > (ENDVALUE - LIST_MAX)) && (wide <= INT_MAX)) {
+ /* 1(c), 4(a,b) on 64-bit systems */
+ goto rangeerror;
+ }
+ if (wide > ENDVALUE) {
/*
- * All end+postive or end-negative expressions
+ * 2(c) (32-bit systems), 3(c)
+ * All end+positive or end-negative expressions
* always indicate "after the end".
+ * Note we will not reach here for a pure numeric value in this
+ * range because irPtr will be NULL in that case.
*/
idx = after;
- } else if (wide <= (irPtr ? INT_MAX : -1)) {
- /* These indices always indicate "before the beginning" */
+ } else if (wide <= INT_MAX) {
+ /* 1(c) (32-bit systems), 4(c) (32-bit systems), 5(c) */
idx = before;
} else {
- /* Encoded end-positive (or end+negative) are offset */
+ /* 2(c) Encodable end-positive (or end+negative) */
idx = (int)wide;
}
- } else {
- return TCL_ERROR;
}
*indexPtr = idx;
return TCL_OK;
+
+rangeerror:
+ if (interp) {
+ Tcl_SetObjResult(
+ interp,
+ Tcl_ObjPrintf("index \"%s\" out of range", TclGetString(objPtr)));
+ Tcl_SetErrorCode(interp,
+ "TCL",
+ "VALUE",
+ "INDEX"
+ "OUTOFRANGE",
+ NULL);
+ }
+ return TCL_ERROR;
}
/*
@@ -3806,21 +3931,52 @@ TclIndexEncode(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
TclIndexDecode(
int encoded, /* Value to decode */
- size_t endValue) /* Meaning of "end" to use, > TCL_INDEX_END */
+ Tcl_Size endValue) /* Meaning of "end" to use, > TCL_INDEX_END */
{
- if (encoded > (int)TCL_INDEX_END) {
+ if (encoded > TCL_INDEX_END) {
return encoded;
}
- if (endValue >= TCL_INDEX_END - encoded) {
- return endValue + encoded - TCL_INDEX_END;
+ endValue += encoded - TCL_INDEX_END;
+ if (endValue >= 0) {
+ return endValue;
}
return TCL_INDEX_NONE;
}
/*
+ *------------------------------------------------------------------------
+ *
+ * TclIndexInvalidError --
+ *
+ * Generates an error message including the invalid index.
+ *
+ * Results:
+ * Always return TCL_ERROR.
+ *
+ * Side effects:
+ * If interp is not-NULL, an error message is stored in it.
+ *
+ *------------------------------------------------------------------------
+ */
+int
+TclIndexInvalidError (
+ Tcl_Interp *interp, /* May be NULL */
+ const char *idxType, /* The descriptive string for idx. Defaults to "index" */
+ Tcl_Size idx) /* Invalid index value */
+{
+ if (interp) {
+ Tcl_SetObjResult(interp,
+ Tcl_ObjPrintf("Invalid %s value %" TCL_SIZE_MODIFIER "d.",
+ idxType ? idxType : "index",
+ idx));
+ }
+ return TCL_ERROR; /* Always */
+}
+
+/*
*----------------------------------------------------------------------
*
* ClearHash --
@@ -4410,7 +4566,7 @@ TclReToGlob(
invalidGlob:
if (interp != NULL) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj(msg, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(msg, -1));
Tcl_SetErrorCode(interp, "TCL", "RE2GLOB", code, NULL);
}
Tcl_DStringFree(dsPtr);
diff --git a/generic/tclVar.c b/generic/tclVar.c
index bc94e73..50189d4 100644
--- a/generic/tclVar.c
+++ b/generic/tclVar.c
@@ -263,7 +263,7 @@ static const Tcl_ObjType localVarNameType = {
const Tcl_ObjInternalRep *irPtr; \
irPtr = TclFetchInternalRep((objPtr), &localVarNameType); \
(name) = irPtr ? (Tcl_Obj *)irPtr->twoPtrValue.ptr1 : NULL; \
- (index) = irPtr ? PTR2UINT(irPtr->twoPtrValue.ptr2) : TCL_INDEX_NONE; \
+ (index) = irPtr ? PTR2INT(irPtr->twoPtrValue.ptr2) : TCL_INDEX_NONE; \
} while (0)
static const Tcl_ObjType parsedVarNameType = {
@@ -301,7 +301,7 @@ TclVarHashCreateVar(
Tcl_Obj *keyPtr;
Var *varPtr;
- keyPtr = Tcl_NewStringObj(key, TCL_INDEX_NONE);
+ keyPtr = Tcl_NewStringObj(key, -1);
Tcl_IncrRefCount(keyPtr);
varPtr = VarHashCreateVar(tablePtr, keyPtr, newPtr);
Tcl_DecrRefCount(keyPtr);
@@ -469,7 +469,7 @@ TclLookupVar(
* is set to NULL. */
{
Var *varPtr;
- Tcl_Obj *part1Ptr = Tcl_NewStringObj(part1, TCL_INDEX_NONE);
+ Tcl_Obj *part1Ptr = Tcl_NewStringObj(part1, -1);
if (createPart1) {
Tcl_IncrRefCount(part1Ptr);
@@ -551,7 +551,7 @@ TclObjLookupVar(
Var *resPtr;
if (part2) {
- part2Ptr = Tcl_NewStringObj(part2, TCL_INDEX_NONE);
+ part2Ptr = Tcl_NewStringObj(part2, -1);
if (createPart2) {
Tcl_IncrRefCount(part2Ptr);
}
@@ -604,14 +604,14 @@ TclObjLookupVarEx(
const char *errMsg = NULL;
int index, parsed = 0;
- size_t localIndex;
+ Tcl_Size localIndex;
Tcl_Obj *namePtr, *arrayPtr, *elem;
*arrayPtrPtr = NULL;
restart:
LocalGetInternalRep(part1Ptr, localIndex, namePtr);
- if (localIndex != TCL_INDEX_NONE) {
+ if (localIndex >= 0) {
if (HasLocalVars(varFramePtr)
&& !(flags & (TCL_GLOBAL_ONLY | TCL_NAMESPACE_ONLY))
&& (localIndex < varFramePtr->numCompiledLocals)) {
@@ -659,7 +659,7 @@ TclObjLookupVarEx(
* part1Ptr is possibly an unparsed array element.
*/
- size_t len;
+ Tcl_Size len;
const char *part1 = Tcl_GetStringFromObj(part1Ptr, &len);
if ((len > 1) && (part1[len - 1] == ')')) {
@@ -949,7 +949,7 @@ TclLookupSimpleVar(
return NULL;
}
if (tail != varName) {
- tailPtr = Tcl_NewStringObj(tail, TCL_INDEX_NONE);
+ tailPtr = Tcl_NewStringObj(tail, -1);
} else {
tailPtr = varNamePtr;
}
@@ -1173,10 +1173,10 @@ Tcl_GetVar2(
* bits. */
{
Tcl_Obj *resultPtr;
- Tcl_Obj *part2Ptr = NULL, *part1Ptr = Tcl_NewStringObj(part1, TCL_INDEX_NONE);
+ Tcl_Obj *part2Ptr = NULL, *part1Ptr = Tcl_NewStringObj(part1, -1);
if (part2) {
- part2Ptr = Tcl_NewStringObj(part2, TCL_INDEX_NONE);
+ part2Ptr = Tcl_NewStringObj(part2, -1);
Tcl_IncrRefCount(part2Ptr);
}
@@ -1226,10 +1226,10 @@ Tcl_GetVar2Ex(
int flags) /* OR-ed combination of TCL_GLOBAL_ONLY, and
* TCL_LEAVE_ERR_MSG bits. */
{
- Tcl_Obj *resPtr, *part2Ptr = NULL, *part1Ptr = Tcl_NewStringObj(part1, TCL_INDEX_NONE);
+ Tcl_Obj *resPtr, *part2Ptr = NULL, *part1Ptr = Tcl_NewStringObj(part1, -1);
if (part2) {
- part2Ptr = Tcl_NewStringObj(part2, TCL_INDEX_NONE);
+ part2Ptr = Tcl_NewStringObj(part2, -1);
Tcl_IncrRefCount(part2Ptr);
}
@@ -1547,7 +1547,7 @@ Tcl_SetVar2(
* TCL_LEAVE_ERR_MSG. */
{
Tcl_Obj *varValuePtr = Tcl_SetVar2Ex(interp, part1, part2,
- Tcl_NewStringObj(newValue, TCL_INDEX_NONE), flags);
+ Tcl_NewStringObj(newValue, -1), flags);
if (varValuePtr == NULL) {
return NULL;
@@ -1607,11 +1607,11 @@ Tcl_SetVar2Ex(
* TCL_APPEND_VALUE, TCL_LIST_ELEMENT or
* TCL_LEAVE_ERR_MSG. */
{
- Tcl_Obj *resPtr, *part2Ptr = NULL, *part1Ptr = Tcl_NewStringObj(part1, TCL_INDEX_NONE);
+ Tcl_Obj *resPtr, *part2Ptr = NULL, *part1Ptr = Tcl_NewStringObj(part1, -1);
Tcl_IncrRefCount(part1Ptr);
if (part2) {
- part2Ptr = Tcl_NewStringObj(part2, TCL_INDEX_NONE);
+ part2Ptr = Tcl_NewStringObj(part2, -1);
Tcl_IncrRefCount(part2Ptr);
}
@@ -2291,10 +2291,10 @@ Tcl_UnsetVar2(
* TCL_LEAVE_ERR_MSG. */
{
int result;
- Tcl_Obj *part2Ptr = NULL, *part1Ptr = Tcl_NewStringObj(part1, TCL_INDEX_NONE);
+ Tcl_Obj *part2Ptr = NULL, *part1Ptr = Tcl_NewStringObj(part1, -1);
if (part2) {
- part2Ptr = Tcl_NewStringObj(part2, TCL_INDEX_NONE);
+ part2Ptr = Tcl_NewStringObj(part2, -1);
}
/*
@@ -2830,7 +2830,7 @@ Tcl_LappendObjCmd(
Tcl_Obj *const objv[]) /* Argument objects. */
{
Tcl_Obj *varValuePtr, *newValuePtr;
- size_t numElems;
+ Tcl_Size numElems;
Var *varPtr, *arrayPtr;
int result, createdNewObj;
@@ -3049,7 +3049,7 @@ ArrayForNRCmd(
ArraySearch *searchPtr = NULL;
Var *varPtr;
int isArray;
- size_t numVars;
+ Tcl_Size numVars;
/*
* array for {k v} a body
@@ -3070,7 +3070,7 @@ ArrayForNRCmd(
if (numVars != 2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "must have two variable names", TCL_INDEX_NONE));
+ "must have two variable names", -1));
Tcl_SetErrorCode(interp, "TCL", "SYNTAX", "array", "for", NULL);
return TCL_ERROR;
}
@@ -3126,7 +3126,7 @@ ArrayForLoopCallback(
Var *varPtr;
Var *arrayPtr;
int done;
- size_t varc;
+ Tcl_Size varc;
/*
* Process the result from the previous execution of the script body.
@@ -3168,7 +3168,7 @@ ArrayForLoopCallback(
Tcl_ResetResult(interp);
if (done == TCL_ERROR) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "array changed during iteration", TCL_INDEX_NONE));
+ "array changed during iteration", -1));
Tcl_SetErrorCode(interp, "TCL", "READ", "array", "for", NULL);
varPtr->flags |= TCL_LEAVE_ERR_MSG;
result = done;
@@ -3634,7 +3634,7 @@ ArrayGetCmd(
Tcl_Obj **nameObjPtr, *patternObj;
Tcl_HashSearch search;
const char *pattern;
- size_t i, count;
+ Tcl_Size i, count;
int result, isArray;
switch (objc) {
@@ -3960,7 +3960,6 @@ ArraySetCmd(
Tcl_Obj *arrayElemObj;
Var *varPtr, *arrayPtr;
int result;
- size_t i;
if (objc != 3) {
Tcl_WrongNumArgs(interp, 1, objv, "arrayName list");
@@ -3995,7 +3994,7 @@ ArraySetCmd(
Tcl_Obj *keyPtr, *valuePtr;
Tcl_DictSearch search;
int done;
- size_t size;
+ Tcl_Size size;
if (Tcl_DictObjSize(interp, arrayElemObj, &size) != TCL_OK) {
return TCL_ERROR;
@@ -4039,8 +4038,9 @@ ArraySetCmd(
* -compatibility reasons) a list.
*/
- size_t elemLen;
+ Tcl_Size elemLen;
Tcl_Obj **elemPtrs, *copyListObj;
+ Tcl_Size i;
result = TclListObjLengthM(interp, arrayElemObj, &elemLen);
if (result != TCL_OK) {
@@ -4048,7 +4048,7 @@ ArraySetCmd(
}
if (elemLen & 1) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "list must have an even number of elements", TCL_INDEX_NONE));
+ "list must have an even number of elements", -1));
Tcl_SetErrorCode(interp, "TCL", "ARGUMENT", "FORMAT", NULL);
return TCL_ERROR;
}
@@ -4218,10 +4218,10 @@ ArrayStatsCmd(
stats = Tcl_HashStats((Tcl_HashTable *) varPtr->value.tablePtr);
if (stats == NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "error reading array statistics", TCL_INDEX_NONE));
+ "error reading array statistics", -1));
return TCL_ERROR;
}
- Tcl_SetObjResult(interp, Tcl_NewStringObj(stats, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(stats, -1));
Tcl_Free(stats);
return TCL_OK;
}
@@ -4785,7 +4785,7 @@ Tcl_GetVariableFullName(
Tcl_AppendObjToObj(objPtr, namePtr);
}
} else if (iPtr->varFramePtr->procPtr) {
- size_t index = varPtr - iPtr->varFramePtr->compiledLocals;
+ Tcl_Size index = varPtr - iPtr->varFramePtr->compiledLocals;
if (index < iPtr->varFramePtr->numCompiledLocals) {
namePtr = localName(iPtr->varFramePtr, index);
@@ -5609,7 +5609,7 @@ static void
FreeLocalVarName(
Tcl_Obj *objPtr)
{
- size_t index;
+ Tcl_Size index;
Tcl_Obj *namePtr;
LocalGetInternalRep(objPtr, index, namePtr);
@@ -5625,7 +5625,7 @@ DupLocalVarName(
Tcl_Obj *srcPtr,
Tcl_Obj *dupPtr)
{
- size_t index;
+ Tcl_Size index;
Tcl_Obj *namePtr;
LocalGetInternalRep(srcPtr, index, namePtr);
@@ -6209,7 +6209,7 @@ AppendLocals(
{
Interp *iPtr = (Interp *) interp;
Var *varPtr;
- size_t i, localVarCt;
+ Tcl_Size i, localVarCt;
int added;
Tcl_Obj *objNamePtr;
const char *varName;
diff --git a/generic/tclZipfs.c b/generic/tclZipfs.c
index 1653dbe..82e1cec 100644
--- a/generic/tclZipfs.c
+++ b/generic/tclZipfs.c
@@ -42,14 +42,14 @@
#define ZIPFS_ERROR(interp,errstr) \
do { \
if (interp) { \
- Tcl_SetObjResult(interp, Tcl_NewStringObj(errstr, TCL_INDEX_NONE)); \
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(errstr, -1)); \
} \
} while (0)
#define ZIPFS_MEM_ERROR(interp) \
do { \
if (interp) { \
Tcl_SetObjResult(interp, Tcl_NewStringObj( \
- "out of memory", TCL_INDEX_NONE)); \
+ "out of memory", -1)); \
Tcl_SetErrorCode(interp, "TCL", "MALLOC", NULL); \
} \
} while (0)
@@ -1382,7 +1382,7 @@ ZipFSOpenArchive(
*/
zf->length = Tcl_Seek(zf->chan, 0, SEEK_END);
- if (zf->length == TCL_INDEX_NONE) {
+ if (zf->length == (size_t) TCL_INDEX_NONE) {
ZIPFS_POSIX_ERROR(interp, "seek error");
goto error;
}
@@ -1481,7 +1481,7 @@ ZipMapArchive(
*/
zf->length = lseek(fd, 0, SEEK_END);
- if (zf->length == TCL_INDEX_NONE || zf->length < ZIP_CENTRAL_END_LEN) {
+ if (zf->length == (size_t) TCL_INDEX_NONE || zf->length < ZIP_CENTRAL_END_LEN) {
ZIPFS_POSIX_ERROR(interp, "invalid file size");
return TCL_ERROR;
}
@@ -1708,8 +1708,8 @@ ZipFSCatalogFilesystem(
Tcl_DString ds2;
Tcl_DStringInit(&ds2);
- Tcl_DStringAppend(&ds2, "assets/.root/", TCL_INDEX_NONE);
- Tcl_DStringAppend(&ds2, path, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&ds2, "assets/.root/", -1);
+ Tcl_DStringAppend(&ds2, path, -1);
if (ZipFSLookup(Tcl_DStringValue(&ds2))) {
/* should not happen but skip it anyway */
Tcl_DStringFree(&ds2);
@@ -1785,7 +1785,7 @@ ZipFSCatalogFilesystem(
Tcl_DStringSetLength(&ds, strlen(z->name) + 8);
Tcl_DStringSetLength(&ds, 0);
- Tcl_DStringAppend(&ds, z->name, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&ds, z->name, -1);
dir = Tcl_DStringValue(&ds);
for (endPtr = strrchr(dir, '/'); endPtr && (endPtr != dir);
endPtr = strrchr(dir, '/')) {
@@ -1907,9 +1907,9 @@ ListMountPoints(
hPtr = Tcl_NextHashEntry(&search)) {
zf = (ZipFile *) Tcl_GetHashValue(hPtr);
Tcl_ListObjAppendElement(NULL, resultList, Tcl_NewStringObj(
- zf->mountPoint, TCL_INDEX_NONE));
+ zf->mountPoint, -1));
Tcl_ListObjAppendElement(NULL, resultList, Tcl_NewStringObj(
- zf->name, TCL_INDEX_NONE));
+ zf->name, -1));
}
Tcl_SetObjResult(interp, resultList);
return TCL_OK;
@@ -1943,7 +1943,7 @@ DescribeMounted(
ZipFile *zf = ZipFSLookupZip(mountPoint);
if (zf) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj(zf->name, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(zf->name, -1));
return TCL_OK;
}
}
@@ -2237,7 +2237,7 @@ ZipFSMountObjCmd(
zipFileObj = Tcl_FSGetNormalizedPath(interp, objv[2]);
if (!zipFileObj) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "could not normalize zip filename", TCL_INDEX_NONE));
+ "could not normalize zip filename", -1));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "NORMALIZE", NULL);
return TCL_ERROR;
}
@@ -2333,7 +2333,7 @@ ZipFSRootObjCmd(
TCL_UNUSED(int) /*objc*/,
TCL_UNUSED(Tcl_Obj *const *)) /*objv*/
{
- Tcl_SetObjResult(interp, Tcl_NewStringObj(ZIPFS_VOLUME, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(ZIPFS_VOLUME, -1));
return TCL_OK;
}
@@ -2578,7 +2578,7 @@ ZipAddFile(
nbyte = nbytecompr = 0;
while (1) {
len = Tcl_Read(in, buf, bufsize);
- if (len == TCL_INDEX_NONE) {
+ if (len == (size_t) TCL_INDEX_NONE) {
Tcl_DStringFree(&zpathDs);
if (nbyte == 0 && errno == EISDIR) {
Tcl_Close(interp, in);
@@ -2708,7 +2708,7 @@ ZipAddFile(
do {
len = Tcl_Read(in, buf, bufsize);
- if (len == TCL_INDEX_NONE) {
+ if (len == (size_t) TCL_INDEX_NONE) {
deflateEnd(&stream);
goto readErrorWithChannelOpen;
}
@@ -2772,7 +2772,7 @@ ZipAddFile(
nbytecompr = (passwd ? 12 : 0);
while (1) {
len = Tcl_Read(in, buf, bufsize);
- if (len == TCL_INDEX_NONE) {
+ if (len == (size_t) TCL_INDEX_NONE) {
goto readErrorWithChannelOpen;
} else if (len == 0) {
break;
@@ -2880,7 +2880,7 @@ ZipFSFind(
Tcl_Obj *cmd[2];
int result;
- cmd[0] = Tcl_NewStringObj("::tcl::zipfs::find", TCL_INDEX_NONE);
+ cmd[0] = Tcl_NewStringObj("::tcl::zipfs::find", -1);
cmd[1] = dirRoot;
Tcl_IncrRefCount(cmd[0]);
result = Tcl_EvalObjv(interp, 2, cmd, 0);
@@ -2991,10 +2991,11 @@ ZipFSMkZipOrImg(
{
Tcl_Channel out;
int count, ret = TCL_ERROR;
- size_t pwlen = 0, slen = 0, lobjc, len, i = 0;
+ size_t pwlen = 0, slen = 0, len, i = 0;
+ Tcl_Size lobjc;
long long directoryStartOffset;
- /* The overall file offset of the start of the
- * central directory. */
+ /* The overall file offset of the start of the
+ * central directory. */
long long suffixStartOffset;/* The overall file offset of the start of the
* suffix of the central directory (i.e.,
* where this data will be written). */
@@ -3298,7 +3299,7 @@ CopyImageFile(
*/
i = Tcl_Seek(in, 0, SEEK_END);
- if (i == TCL_INDEX_NONE) {
+ if (i == (size_t) TCL_INDEX_NONE) {
errMsg = "seek error";
goto copyError;
}
@@ -3628,7 +3629,7 @@ ZipFSCanonicalObjCmd(
filename = TclGetString(objv[2]);
result = CanonicalPath(mntpoint, filename, &dPath, zipfs);
}
- Tcl_SetObjResult(interp, Tcl_NewStringObj(result, TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(result, -1));
return TCL_OK;
}
@@ -3673,7 +3674,7 @@ ZipFSExistsObjCmd(
filename = TclGetString(objv[1]);
Tcl_DStringInit(&ds);
Tcl_DStringAppend(&ds, ZIPFS_VOLUME, ZIPFS_VOLUME_LEN - 1);
- Tcl_DStringAppend(&ds, filename, TCL_INDEX_NONE);
+ Tcl_DStringAppend(&ds, filename, -1);
filename = Tcl_DStringValue(&ds);
ReadLock();
@@ -3724,7 +3725,7 @@ ZipFSInfoObjCmd(
Tcl_Obj *result = Tcl_GetObjResult(interp);
Tcl_ListObjAppendElement(interp, result,
- Tcl_NewStringObj(z->zipFilePtr->name, TCL_INDEX_NONE));
+ Tcl_NewStringObj(z->zipFilePtr->name, -1));
Tcl_ListObjAppendElement(interp, result,
Tcl_NewWideIntObj(z->numBytes));
Tcl_ListObjAppendElement(interp, result,
@@ -3810,7 +3811,7 @@ ZipFSListObjCmd(
if (Tcl_StringMatch(z->name, pattern)) {
Tcl_ListObjAppendElement(interp, result,
- Tcl_NewStringObj(z->name, TCL_INDEX_NONE));
+ Tcl_NewStringObj(z->name, -1));
}
}
} else if (regexp) {
@@ -3820,7 +3821,7 @@ ZipFSListObjCmd(
if (Tcl_RegExpExec(interp, regexp, z->name, z->name)) {
Tcl_ListObjAppendElement(interp, result,
- Tcl_NewStringObj(z->name, TCL_INDEX_NONE));
+ Tcl_NewStringObj(z->name, -1));
}
}
} else {
@@ -3829,7 +3830,7 @@ ZipFSListObjCmd(
ZipEntry *z = (ZipEntry *) Tcl_GetHashValue(hPtr);
Tcl_ListObjAppendElement(interp, result,
- Tcl_NewStringObj(z->name, TCL_INDEX_NONE));
+ Tcl_NewStringObj(z->name, -1));
}
}
Unlock();
@@ -3873,7 +3874,7 @@ TclZipfs_TclLibrary(void)
*/
if (zipfs_literal_tcl_library) {
- return Tcl_NewStringObj(zipfs_literal_tcl_library, TCL_INDEX_NONE);
+ return Tcl_NewStringObj(zipfs_literal_tcl_library, -1);
}
/*
@@ -3887,7 +3888,7 @@ TclZipfs_TclLibrary(void)
Tcl_DecrRefCount(vfsInitScript);
if (found == TCL_OK) {
zipfs_literal_tcl_library = ZIPFS_APP_MOUNT "/tcl_library";
- return Tcl_NewStringObj(zipfs_literal_tcl_library, TCL_INDEX_NONE);
+ return Tcl_NewStringObj(zipfs_literal_tcl_library, -1);
}
/*
@@ -3906,17 +3907,17 @@ TclZipfs_TclLibrary(void)
#endif
if (ZipfsAppHookFindTclInit(dllName) == TCL_OK) {
- return Tcl_NewStringObj(zipfs_literal_tcl_library, TCL_INDEX_NONE);
+ return Tcl_NewStringObj(zipfs_literal_tcl_library, -1);
}
#elif !defined(NO_DLFCN_H)
Dl_info dlinfo;
if (dladdr((const void *)TclZipfs_TclLibrary, &dlinfo) && (dlinfo.dli_fname != NULL)
&& (ZipfsAppHookFindTclInit(dlinfo.dli_fname) == TCL_OK)) {
- return Tcl_NewStringObj(zipfs_literal_tcl_library, TCL_INDEX_NONE);
+ return Tcl_NewStringObj(zipfs_literal_tcl_library, -1);
}
#else
if (ZipfsAppHookFindTclInit(CFG_RUNTIME_LIBDIR "/" CFG_RUNTIME_DLLFILE) == TCL_OK) {
- return Tcl_NewStringObj(zipfs_literal_tcl_library, TCL_INDEX_NONE);
+ return Tcl_NewStringObj(zipfs_literal_tcl_library, -1);
}
#endif /* _WIN32 */
#endif /* !defined(STATIC_BUILD) */
@@ -3927,7 +3928,7 @@ TclZipfs_TclLibrary(void)
*/
if (zipfs_literal_tcl_library) {
- return Tcl_NewStringObj(zipfs_literal_tcl_library, TCL_INDEX_NONE);
+ return Tcl_NewStringObj(zipfs_literal_tcl_library, -1);
}
return NULL;
}
@@ -4936,7 +4937,7 @@ static Tcl_Obj *
ZipFSFilesystemSeparatorProc(
TCL_UNUSED(Tcl_Obj *) /*pathPtr*/)
{
- return Tcl_NewStringObj("/", TCL_INDEX_NONE);
+ return Tcl_NewStringObj("/", -1);
}
/*
@@ -5063,7 +5064,7 @@ ZipFSMatchInDirectoryProc(
if (z && ((dirOnly < 0) || (!dirOnly && !z->isDirectory)
|| (dirOnly && z->isDirectory))) {
- AppendWithPrefix(result, prefixBuf, z->name, TCL_INDEX_NONE);
+ AppendWithPrefix(result, prefixBuf, z->name, -1);
}
goto end;
}
@@ -5096,7 +5097,7 @@ ZipFSMatchInDirectoryProc(
continue;
}
if ((z->depth == scnt) && Tcl_StringCaseMatch(z->name, pat, 0)) {
- AppendWithPrefix(result, prefixBuf, z->name + strip, TCL_INDEX_NONE);
+ AppendWithPrefix(result, prefixBuf, z->name + strip, -1);
}
}
Tcl_Free(pat);
@@ -5286,7 +5287,7 @@ ZipFSPathInFilesystemProc(
static Tcl_Obj *
ZipFSListVolumesProc(void)
{
- return Tcl_NewStringObj(ZIPFS_VOLUME, TCL_INDEX_NONE);
+ return Tcl_NewStringObj(ZIPFS_VOLUME, -1);
}
/*
@@ -5400,10 +5401,10 @@ ZipFSFileAttrsGetProc(
z->zipFilePtr->mountPointLen);
break;
case ZIP_ATTR_ARCHIVE:
- *objPtrRef = Tcl_NewStringObj(z->zipFilePtr->name, TCL_INDEX_NONE);
+ *objPtrRef = Tcl_NewStringObj(z->zipFilePtr->name, -1);
break;
case ZIP_ATTR_PERMISSIONS:
- *objPtrRef = Tcl_NewStringObj("0o555", TCL_INDEX_NONE);
+ *objPtrRef = Tcl_NewStringObj("0o555", -1);
break;
case ZIP_ATTR_CRC:
TclNewIntObj(*objPtrRef, z->crc32);
@@ -5464,7 +5465,7 @@ static Tcl_Obj *
ZipFSFilesystemPathTypeProc(
TCL_UNUSED(Tcl_Obj *) /*pathPtr*/)
{
- return Tcl_NewStringObj("zip", TCL_INDEX_NONE);
+ return Tcl_NewStringObj("zip", -1);
}
/*
@@ -5676,8 +5677,8 @@ TclZipfs_Init(
*/
Tcl_GetEnsembleMappingDict(NULL, ensemble, &mapObj);
- Tcl_DictObjPut(NULL, mapObj, Tcl_NewStringObj("find", TCL_INDEX_NONE),
- Tcl_NewStringObj("::tcl::zipfs::find", TCL_INDEX_NONE));
+ Tcl_DictObjPut(NULL, mapObj, Tcl_NewStringObj("find", -1),
+ Tcl_NewStringObj("::tcl::zipfs::find", -1));
Tcl_CreateObjCommand(interp, "::tcl::zipfs::tcl_library_init",
ZipFSTclLibraryObjCmd, NULL, NULL);
Tcl_PkgProvide(interp, "tcl::zipfs", "2.0");
diff --git a/generic/tclZlib.c b/generic/tclZlib.c
index e016fd0..9244eaf 100644
--- a/generic/tclZlib.c
+++ b/generic/tclZlib.c
@@ -64,7 +64,7 @@ typedef struct {
Tcl_Obj *inData, *outData; /* Input / output buffers (lists) */
Tcl_Obj *currentInput; /* Pointer to what is currently being
* inflated. */
- size_t outPos;
+ Tcl_Size outPos;
int mode; /* Either TCL_ZLIB_STREAM_DEFLATE or
* TCL_ZLIB_STREAM_INFLATE. */
int format; /* Flags from the TCL_ZLIB_FORMAT_* */
@@ -313,7 +313,7 @@ ConvertError(
sprintf(codeStrBuf, "%d", code);
break;
}
- Tcl_SetObjResult(interp, Tcl_NewStringObj(zError(code), TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(zError(code), -1));
/*
* Tricky point! We might pass NULL twice here (and will when the error
@@ -350,7 +350,7 @@ ConvertErrorToList(
return Tcl_NewListObj(3, objv);
case Z_ERRNO:
TclNewLiteralStringObj(objv[2], "POSIX");
- objv[3] = Tcl_NewStringObj(Tcl_ErrnoId(), TCL_INDEX_NONE);
+ objv[3] = Tcl_NewStringObj(Tcl_ErrnoId(), -1);
return Tcl_NewListObj(4, objv);
case Z_NEED_DICT:
TclNewLiteralStringObj(objv[2], "NEED_DICT");
@@ -405,7 +405,7 @@ GetValue(
const char *nameStr,
Tcl_Obj **valuePtrPtr)
{
- Tcl_Obj *name = Tcl_NewStringObj(nameStr, TCL_INDEX_NONE);
+ Tcl_Obj *name = Tcl_NewStringObj(nameStr, -1);
int result = Tcl_DictObjGet(interp, dictObj, name, valuePtrPtr);
TclDecrRefCount(name);
@@ -555,7 +555,7 @@ GenerateHeader(
*/
#define SetValue(dictObj, key, value) \
- Tcl_DictObjPut(NULL, (dictObj), Tcl_NewStringObj((key), TCL_INDEX_NONE), (value))
+ Tcl_DictObjPut(NULL, (dictObj), Tcl_NewStringObj((key), -1), (value))
static void
ExtractHeader(
@@ -606,7 +606,7 @@ ExtractHeader(
}
if (headerPtr->text != Z_UNKNOWN) {
SetValue(dictObj, "type",
- Tcl_NewStringObj(headerPtr->text ? "text" : "binary", TCL_INDEX_NONE));
+ Tcl_NewStringObj(headerPtr->text ? "text" : "binary", -1));
}
if (latin1enc != NULL) {
@@ -849,7 +849,7 @@ Tcl_ZlibStreamInit(
if (Tcl_FindCommand(interp, Tcl_DStringValue(&cmdname),
NULL, 0) != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "BUG: Stream command name already exists", TCL_INDEX_NONE));
+ "BUG: Stream command name already exists", -1));
Tcl_SetErrorCode(interp, "TCL", "BUG", "EXISTING_CMD", NULL);
Tcl_DStringFree(&cmdname);
goto error;
@@ -1240,7 +1240,7 @@ Tcl_ZlibStreamPut(
if (zshPtr->streamEnd) {
if (zshPtr->interp) {
Tcl_SetObjResult(zshPtr->interp, Tcl_NewStringObj(
- "already past compressed stream end", TCL_INDEX_NONE));
+ "already past compressed stream end", -1));
Tcl_SetErrorCode(zshPtr->interp, "TCL", "ZIP", "CLOSED", NULL);
}
return TCL_ERROR;
@@ -1359,15 +1359,15 @@ int
Tcl_ZlibStreamGet(
Tcl_ZlibStream zshandle, /* As obtained from Tcl_ZlibStreamInit */
Tcl_Obj *data, /* A place to append the data. */
- size_t count) /* Number of bytes to grab as a maximum, you
+ Tcl_Size count) /* Number of bytes to grab as a maximum, you
* may get less! */
{
ZlibStreamHandle *zshPtr = (ZlibStreamHandle *) zshandle;
int e;
- size_t listLen, i, itemLen = 0, dataPos = 0;
+ Tcl_Size listLen, i, itemLen = 0, dataPos = 0;
Tcl_Obj *itemObj;
unsigned char *dataPtr, *itemPtr;
- size_t existing = 0;
+ Tcl_Size existing = 0;
/*
* Getting beyond the of stream, just return empty string.
@@ -1382,7 +1382,7 @@ Tcl_ZlibStreamGet(
}
if (zshPtr->mode == TCL_ZLIB_STREAM_INFLATE) {
- if (count == TCL_INDEX_NONE) {
+ if (count < 0) {
/*
* The only safe thing to do is restict to 65k. We might cause a
* panic for out of memory if we just kept growing the buffer.
@@ -1471,7 +1471,7 @@ Tcl_ZlibStreamGet(
if (zshPtr->interp) {
Tcl_SetObjResult(zshPtr->interp, Tcl_NewStringObj(
"unexpected zlib internal state during"
- " decompression", TCL_INDEX_NONE));
+ " decompression", -1));
Tcl_SetErrorCode(zshPtr->interp, "TCL", "ZIP", "STATE",
NULL);
}
@@ -1539,7 +1539,7 @@ Tcl_ZlibStreamGet(
}
} else {
TclListObjLengthM(NULL, zshPtr->outData, &listLen);
- if (count == TCL_INDEX_NONE) {
+ if (count < 0) {
count = 0;
for (i=0; i<listLen; i++) {
Tcl_ListObjIndex(NULL, zshPtr->outData, i, &itemObj);
@@ -1569,8 +1569,8 @@ Tcl_ZlibStreamGet(
Tcl_ListObjIndex(NULL, zshPtr->outData, 0, &itemObj);
itemPtr = Tcl_GetByteArrayFromObj(itemObj, &itemLen);
- if (itemLen-zshPtr->outPos + dataPos >= count) {
- size_t len = count - dataPos;
+ if ((itemLen-zshPtr->outPos) >= count-dataPos) {
+ Tcl_Size len = count - dataPos;
memcpy(dataPtr + dataPos, itemPtr + zshPtr->outPos, len);
zshPtr->outPos += len;
@@ -1579,7 +1579,7 @@ Tcl_ZlibStreamGet(
zshPtr->outPos = 0;
}
} else {
- size_t len = itemLen - zshPtr->outPos;
+ Tcl_Size len = itemLen - zshPtr->outPos;
memcpy(dataPtr + dataPos, itemPtr + zshPtr->outPos, len);
dataPos += len;
@@ -1767,11 +1767,11 @@ Tcl_ZlibInflate(
Tcl_Interp *interp,
int format,
Tcl_Obj *data,
- size_t bufferSize,
+ Tcl_Size bufferSize,
Tcl_Obj *gzipHeaderDictObj)
{
int wbits = 0, e = 0;
- size_t inLen = 0, newBufferSize;
+ Tcl_Size inLen = 0, newBufferSize;
Byte *inData = NULL, *outData = NULL, *newOutData = NULL;
z_stream stream;
gz_header header, *headerPtr = NULL;
@@ -1956,7 +1956,7 @@ unsigned int
Tcl_ZlibCRC32(
unsigned int crc,
const unsigned char *buf,
- size_t len)
+ Tcl_Size len)
{
/* Nothing much to do, just wrap the crc32(). */
return crc32(crc, (Bytef *) buf, len);
@@ -1966,7 +1966,7 @@ unsigned int
Tcl_ZlibAdler32(
unsigned int adler,
const unsigned char *buf,
- size_t len)
+ Tcl_Size len)
{
return adler32(adler, (Bytef *) buf, len);
}
@@ -2236,7 +2236,7 @@ ZlibCmd(
return TCL_ERROR;
badLevel:
- Tcl_SetObjResult(interp, Tcl_NewStringObj("level must be 0 to 9", TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("level must be 0 to 9", -1));
Tcl_SetErrorCode(interp, "TCL", "VALUE", "COMPRESSIONLEVEL", NULL);
if (extraInfoStr) {
Tcl_AddErrorInfo(interp, extraInfoStr);
@@ -2446,7 +2446,7 @@ ZlibPushSubcmd(
enum pushOptionsEnum {poDictionary, poHeader, poLevel, poLimit} option;
Tcl_Obj *headerObj = NULL, *compDictObj = NULL;
int limit = DEFAULT_BUFFER_SIZE;
- size_t dummy;
+ Tcl_Size dummy;
if (objc < 4) {
Tcl_WrongNumArgs(interp, 2, objv, "mode channel ?options...?");
@@ -2499,7 +2499,7 @@ ZlibPushSubcmd(
if (mode == TCL_ZLIB_STREAM_DEFLATE && !(chanMode & TCL_WRITABLE)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "compression may only be applied to writable channels", TCL_INDEX_NONE));
+ "compression may only be applied to writable channels", -1));
Tcl_SetErrorCode(interp, "TCL", "ZIP", "UNWRITABLE", NULL);
return TCL_ERROR;
}
@@ -2539,7 +2539,7 @@ ZlibPushSubcmd(
}
if (level < 0 || level > 9) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "level must be 0 to 9", TCL_INDEX_NONE));
+ "level must be 0 to 9", -1));
Tcl_SetErrorCode(interp, "TCL", "VALUE", "COMPRESSIONLEVEL",
NULL);
goto genericOptionError;
@@ -2561,7 +2561,7 @@ ZlibPushSubcmd(
if (format == TCL_ZLIB_FORMAT_GZIP) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"a compression dictionary may not be set in the "
- "gzip format", TCL_INDEX_NONE));
+ "gzip format", -1));
Tcl_SetErrorCode(interp, "TCL", "ZIP", "BADOPT", NULL);
goto genericOptionError;
}
@@ -2773,7 +2773,7 @@ ZlibStreamAddCmd(
if (i == objc-2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"\"-buffer\" option must be followed by integer "
- "decompression buffersize", TCL_INDEX_NONE));
+ "decompression buffersize", -1));
Tcl_SetErrorCode(interp, "TCL", "ZIP", "NOVAL", NULL);
return TCL_ERROR;
}
@@ -2792,7 +2792,7 @@ ZlibStreamAddCmd(
if (i == objc-2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"\"-dictionary\" option must be followed by"
- " compression dictionary bytes", TCL_INDEX_NONE));
+ " compression dictionary bytes", -1));
Tcl_SetErrorCode(interp, "TCL", "ZIP", "NOVAL", NULL);
return TCL_ERROR;
}
@@ -2803,7 +2803,7 @@ ZlibStreamAddCmd(
if (flush == -2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"\"-flush\", \"-fullflush\" and \"-finalize\" options"
- " are mutually exclusive", TCL_INDEX_NONE));
+ " are mutually exclusive", -1));
Tcl_SetErrorCode(interp, "TCL", "ZIP", "EXCLUSIVE", NULL);
return TCL_ERROR;
}
@@ -2900,7 +2900,7 @@ ZlibStreamPutCmd(
if (i == objc-2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"\"-dictionary\" option must be followed by"
- " compression dictionary bytes", TCL_INDEX_NONE));
+ " compression dictionary bytes", -1));
Tcl_SetErrorCode(interp, "TCL", "ZIP", "NOVAL", NULL);
return TCL_ERROR;
}
@@ -2910,7 +2910,7 @@ ZlibStreamPutCmd(
if (flush == -2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"\"-flush\", \"-fullflush\" and \"-finalize\" options"
- " are mutually exclusive", TCL_INDEX_NONE));
+ " are mutually exclusive", -1));
Tcl_SetErrorCode(interp, "TCL", "ZIP", "EXCLUSIVE", NULL);
return TCL_ERROR;
}
@@ -2958,7 +2958,7 @@ ZlibStreamHeaderCmd(
} else if (zshPtr->mode != TCL_ZLIB_STREAM_INFLATE
|| zshPtr->format != TCL_ZLIB_FORMAT_GZIP) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "only gunzip streams can produce header information", TCL_INDEX_NONE));
+ "only gunzip streams can produce header information", -1));
Tcl_SetErrorCode(interp, "TCL", "ZIP", "BADOP", NULL);
return TCL_ERROR;
}
@@ -3272,7 +3272,7 @@ ZlibTransformOutput(
Tcl_ListObjAppendElement(NULL, errObj,
ConvertErrorToList(e, cd->outStream.adler));
Tcl_ListObjAppendElement(NULL, errObj,
- Tcl_NewStringObj(cd->outStream.msg, TCL_INDEX_NONE));
+ Tcl_NewStringObj(cd->outStream.msg, -1));
Tcl_SetChannelError(cd->parent, errObj);
*errorCodePtr = EINVAL;
return -1;
@@ -3422,7 +3422,7 @@ ZlibTransformSetOption( /* not used */
return TCL_ERROR;
} else if (newLimit < 1 || newLimit > MAX_BUFFER_SIZE) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "-limit must be between 1 and 65536", TCL_INDEX_NONE));
+ "-limit must be between 1 and 65536", -1));
Tcl_SetErrorCode(interp, "TCL", "VALUE", "READLIMIT", NULL);
return TCL_ERROR;
}
@@ -3496,7 +3496,7 @@ ZlibTransformGetOption(
Tcl_DStringAppendElement(dsPtr, "-checksum");
Tcl_DStringAppendElement(dsPtr, buf);
} else {
- Tcl_DStringAppend(dsPtr, buf, TCL_INDEX_NONE);
+ Tcl_DStringAppend(dsPtr, buf, -1);
return TCL_OK;
}
}
@@ -3822,7 +3822,7 @@ ZlibStackChannelTransform(
}
cd->chan = chan;
cd->parent = Tcl_GetStackedChannel(chan);
- Tcl_SetObjResult(interp, Tcl_NewStringObj(Tcl_GetChannelName(chan), TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(Tcl_GetChannelName(chan), -1));
return chan;
error:
@@ -3952,7 +3952,7 @@ ResultDecompress(
Tcl_ListObjAppendElement(NULL, errObj,
ConvertErrorToList(e, cd->inStream.adler));
Tcl_ListObjAppendElement(NULL, errObj,
- Tcl_NewStringObj(cd->inStream.msg, TCL_INDEX_NONE));
+ Tcl_NewStringObj(cd->inStream.msg, -1));
Tcl_SetChannelError(cd->parent, errObj);
*errorCodePtr = EINVAL;
return -1;
@@ -4027,7 +4027,7 @@ Tcl_ZlibStreamInit(
Tcl_ZlibStream *zshandle)
{
if (interp) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj("unimplemented", TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("unimplemented", -1));
Tcl_SetErrorCode(interp, "TCL", "UNIMPLEMENTED", NULL);
}
return TCL_ERROR;
@@ -4095,7 +4095,7 @@ Tcl_ZlibDeflate(
Tcl_Obj *gzipHeaderDictObj)
{
if (interp) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj("unimplemented", TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("unimplemented", -1));
Tcl_SetErrorCode(interp, "TCL", "UNIMPLEMENTED", NULL);
}
return TCL_ERROR;
@@ -4110,7 +4110,7 @@ Tcl_ZlibInflate(
Tcl_Obj *gzipHeaderDictObj)
{
if (interp) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj("unimplemented", TCL_INDEX_NONE));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("unimplemented", -1));
Tcl_SetErrorCode(interp, "TCL", "UNIMPLEMENTED", NULL);
}
return TCL_ERROR;