summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--generic/tcl.h6
-rwxr-xr-xgeneric/tclArithSeries.c4
-rw-r--r--generic/tclAssembly.c30
-rw-r--r--generic/tclBasic.c72
-rw-r--r--generic/tclBinary.c12
-rw-r--r--generic/tclCkalloc.c2
-rw-r--r--generic/tclCmdIL.c72
-rw-r--r--generic/tclCmdMZ.c30
-rw-r--r--generic/tclCompCmds.c32
-rw-r--r--generic/tclCompCmdsSZ.c10
-rw-r--r--generic/tclCompExpr.c8
-rw-r--r--generic/tclCompile.c2
-rw-r--r--generic/tclConfig.c12
-rw-r--r--generic/tclDecls.h4
-rw-r--r--generic/tclDictObj.c10
-rw-r--r--generic/tclDisassemble.c108
-rw-r--r--generic/tclEnsemble.c72
-rw-r--r--generic/tclEnv.c8
-rw-r--r--generic/tclEvent.c30
-rw-r--r--generic/tclExecute.c40
-rw-r--r--generic/tclFCmd.c4
-rw-r--r--generic/tclFileName.c28
-rw-r--r--generic/tclHistory.c2
-rw-r--r--generic/tclIO.c26
-rw-r--r--generic/tclIOCmd.c2
-rw-r--r--generic/tclIOGT.c52
-rw-r--r--generic/tclIOSock.c2
-rw-r--r--generic/tclIOUtil.c10
-rw-r--r--generic/tclIndexObj.c12
-rw-r--r--generic/tclInterp.c116
-rw-r--r--generic/tclLink.c10
-rw-r--r--generic/tclListObj.c2
-rw-r--r--generic/tclLiteral.c2
-rw-r--r--generic/tclLoad.c26
-rw-r--r--generic/tclLoadNone.c2
-rw-r--r--generic/tclNamesp.c58
-rw-r--r--generic/tclOO.c106
-rw-r--r--generic/tclOOBasic.c44
-rw-r--r--generic/tclOOCall.c2
-rw-r--r--generic/tclOODefineCmds.c112
-rw-r--r--generic/tclOOInfo.c36
-rw-r--r--generic/tclOOMethod.c10
-rw-r--r--generic/tclObj.c22
-rw-r--r--generic/tclParse.c22
-rw-r--r--generic/tclPathObj.c2
-rw-r--r--generic/tclPipe.c14
-rw-r--r--generic/tclPkg.c22
-rw-r--r--generic/tclProc.c18
-rw-r--r--generic/tclProcess.c32
-rw-r--r--generic/tclRegexp.c6
-rw-r--r--generic/tclResult.c6
-rw-r--r--generic/tclScan.c22
-rw-r--r--generic/tclStrToD.c4
-rw-r--r--generic/tclStringObj.c6
-rw-r--r--generic/tclStubInit.c4
-rw-r--r--generic/tclTest.c70
-rw-r--r--generic/tclTestObj.c42
-rw-r--r--generic/tclTestProcBodyObj.c2
-rw-r--r--generic/tclThreadTest.c10
-rw-r--r--generic/tclTimer.c28
-rw-r--r--generic/tclVar.c36
-rw-r--r--generic/tclZipfs.c78
-rw-r--r--generic/tclZlib.c91
-rw-r--r--macosx/tclMacOSXFCmd.c6
-rw-r--r--tests/basic.test2
-rw-r--r--tests/fCmd.test84
-rw-r--r--tests/fileSystem.test10
-rw-r--r--tests/io.test104
-rw-r--r--tests/stringObj.test6
-rw-r--r--tests/tcltest.test2
-rw-r--r--tests/winFCmd.test114
-rw-r--r--tests/winTime.test5
-rw-r--r--tools/valgrind_suppress137
-rw-r--r--unix/dltest/pkga.c2
-rw-r--r--unix/dltest/pkgb.c2
-rw-r--r--unix/dltest/pkgc.c2
-rw-r--r--unix/dltest/pkgd.c2
-rw-r--r--unix/dltest/pkge.c2
-rw-r--r--unix/dltest/pkgua.c2
-rw-r--r--unix/dltest/pkgπ.c3
-rw-r--r--unix/tclUnixFCmd.c2
-rw-r--r--unix/tclUnixSock.c8
-rw-r--r--win/tclWin32Dll.c4
-rw-r--r--win/tclWinChan.c6
-rw-r--r--win/tclWinFile.c68
-rw-r--r--win/tclWinPanic.c4
-rw-r--r--win/tclWinTest.c315
87 files changed, 1457 insertions, 1200 deletions
diff --git a/generic/tcl.h b/generic/tcl.h
index 12ce4ca..fd02ccc 100644
--- a/generic/tcl.h
+++ b/generic/tcl.h
@@ -2388,9 +2388,9 @@ EXTERN const char *TclZipfs_AppHook(int *argc, char ***argv);
# define attemptckalloc Tcl_AttemptAlloc
# ifdef _MSC_VER
/* Silence invalid C4090 warnings */
-# define ckfree(a) Tcl_Free((char *)(a))
-# define ckrealloc(a,b) Tcl_Realloc((char *)(a),(b))
-# define attemptckrealloc(a,b) Tcl_AttemptRealloc((char *)(a),(b))
+# define ckfree(a) Tcl_Free((void *)(a))
+# define ckrealloc(a,b) Tcl_Realloc((void *)(a),(b))
+# define attemptckrealloc(a,b) Tcl_AttemptRealloc((void *)(a),(b))
# else
# define ckfree Tcl_Free
# define ckrealloc Tcl_Realloc
diff --git a/generic/tclArithSeries.c b/generic/tclArithSeries.c
index 48efa8c..0232746 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", -1));
+ Tcl_NewStringObj("max length of a Tcl list exceeded", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "MEMORY", NULL);
return TCL_ERROR;
}
@@ -865,7 +865,7 @@ TclArithSeriesGetElements(
if (interp) {
Tcl_SetObjResult(
interp,
- Tcl_NewStringObj("max length of a Tcl list exceeded", -1));
+ Tcl_NewStringObj("max length of a Tcl list exceeded", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "MEMORY", NULL);
}
return TCL_ERROR;
diff --git a/generic/tclAssembly.c b/generic/tclAssembly.c
index a05a4d4..af95312 100644
--- a/generic/tclAssembly.c
+++ b/generic/tclAssembly.c
@@ -1384,7 +1384,7 @@ AssembleOneLine(
}
if (opnd < 0 || opnd > 3) {
Tcl_SetObjResult(interp,
- Tcl_NewStringObj("operand must be [0..3]", -1));
+ Tcl_NewStringObj("operand must be [0..3]", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "ASSEM", "OPERAND<0,>3", NULL);
goto cleanup;
}
@@ -1625,7 +1625,7 @@ AssembleOneLine(
if (opnd < 2) {
if (assemEnvPtr->flags & TCL_EVAL_DIRECT) {
Tcl_SetObjResult(interp,
- Tcl_NewStringObj("operand must be >=2", -1));
+ Tcl_NewStringObj("operand must be >=2", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "ASSEM", "OPERAND>=2", NULL);
}
goto cleanup;
@@ -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", -1));
+ "assembly code may not contain substitutions", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "ASSEM", "NOSUBST", NULL);
}
return TCL_ERROR;
@@ -2330,7 +2330,7 @@ FindLocalVar(
if (assemEnvPtr->flags & TCL_EVAL_DIRECT) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"cannot use this instruction to create a variable"
- " in a non-proc context", -1));
+ " in a non-proc context", TCL_INDEX_NONE));
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", -1);
+ result = Tcl_NewStringObj("operand does not fit in one byte", TCL_INDEX_NONE);
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", -1);
+ result = Tcl_NewStringObj("operand does not fit in one byte", TCL_INDEX_NONE);
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", -1);
+ result = Tcl_NewStringObj("operand must be nonnegative", TCL_INDEX_NONE);
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", -1);
+ result = Tcl_NewStringObj("operand must be positive", TCL_INDEX_NONE);
Tcl_SetObjResult(interp, result);
Tcl_SetErrorCode(interp, "TCL", "ASSEM", "POSITIVE", NULL);
return TCL_ERROR;
@@ -3414,7 +3414,7 @@ StackCheckBasicBlock(
}
if (assemEnvPtr->flags & TCL_EVAL_DIRECT) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "inconsistent stack depths on two execution paths", -1));
+ "inconsistent stack depths on two execution paths", TCL_INDEX_NONE));
/*
* 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", -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("stack underflow", TCL_INDEX_NONE));
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", -1));
- Tcl_SetErrorCode(interp, "TCL", "ASSEM", "BADSTACKINCATCH", -1);
+ "code pops stack below level of enclosing catch", TCL_INDEX_NONE));
+ Tcl_SetErrorCode(interp, "TCL", "ASSEM", "BADSTACKINCATCH", TCL_INDEX_NONE);
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", -1));
+ "exception contexts", TCL_INDEX_NONE));
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", -1));
+ "endCatch without a corresponding beginCatch", TCL_INDEX_NONE));
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", -1));
+ "catch still active on exit from assembly code", TCL_INDEX_NONE));
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 1dbd90b..381d127 100644
--- a/generic/tclBasic.c
+++ b/generic/tclBasic.c
@@ -2152,7 +2152,7 @@ Tcl_HideCommand(
if (strstr(hiddenCmdToken, "::") != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"cannot use namespace qualifiers in hidden command"
- " token (rename)", -1));
+ " token (rename)", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "VALUE", "HIDDENTOKEN", NULL);
return TCL_ERROR;
}
@@ -3188,11 +3188,11 @@ TclRenameCommand(
*/
Tcl_DStringInit(&newFullName);
- Tcl_DStringAppend(&newFullName, newNsPtr->fullName, -1);
+ Tcl_DStringAppend(&newFullName, newNsPtr->fullName, TCL_INDEX_NONE);
if (newNsPtr != iPtr->globalNsPtr) {
TclDStringAppendLiteral(&newFullName, "::");
}
- Tcl_DStringAppend(&newFullName, newTail, -1);
+ Tcl_DStringAppend(&newFullName, newTail, TCL_INDEX_NONE);
cmdPtr->refCount++;
CallCommandTraces(iPtr, cmdPtr, TclGetString(oldFullName),
Tcl_DStringValue(&newFullName), TCL_TRACE_RENAME);
@@ -3553,14 +3553,14 @@ Tcl_GetCommandFullName(
if ((cmdPtr != NULL) && TclRoutineHasName(cmdPtr)) {
if (cmdPtr->nsPtr != NULL) {
- Tcl_AppendToObj(objPtr, cmdPtr->nsPtr->fullName, -1);
+ Tcl_AppendToObj(objPtr, cmdPtr->nsPtr->fullName, TCL_INDEX_NONE);
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, -1);
+ Tcl_AppendToObj(objPtr, name, TCL_INDEX_NONE);
}
}
}
@@ -4061,7 +4061,7 @@ TclInterpReady(
if (iPtr->flags & DELETED) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to call eval in deleted interpreter", -1));
+ "attempt to call eval in deleted interpreter", TCL_INDEX_NONE));
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?)", -1));
+ "too many nested evaluations (infinite loop?)", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "LIMIT", "STACK", NULL);
return TCL_ERROR;
}
@@ -4224,7 +4224,7 @@ Tcl_Canceled(
}
}
- Tcl_SetObjResult(interp, Tcl_NewStringObj(message, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(message, TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "CANCEL", id, message, NULL);
}
@@ -6361,10 +6361,10 @@ ProcessUnexpectedResult(
Tcl_ResetResult(interp);
if (returnCode == TCL_BREAK) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "invoked \"break\" outside of a loop", -1));
+ "invoked \"break\" outside of a loop", TCL_INDEX_NONE));
} else if (returnCode == TCL_CONTINUE) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "invoked \"continue\" outside of a loop", -1));
+ "invoked \"continue\" outside of a loop", TCL_INDEX_NONE));
} 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, -1);
+ exprPtr = Tcl_NewStringObj(exprstring, TCL_INDEX_NONE);
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, -1);
+ exprPtr = Tcl_NewStringObj(exprstring, TCL_INDEX_NONE);
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, -1);
+ Tcl_Obj *exprPtr = Tcl_NewStringObj(exprstring, TCL_INDEX_NONE);
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", -1));
+ "illegal argument vector", TCL_INDEX_NONE));
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, -1);
+ Tcl_Obj *resultPtr, *exprObj = Tcl_NewStringObj(expr, TCL_INDEX_NONE);
Tcl_IncrRefCount(exprObj);
code = Tcl_ExprObj(interp, exprObj, &resultPtr);
@@ -6886,10 +6886,10 @@ Tcl_VarEval(
if (string == NULL) {
break;
}
- Tcl_DStringAppend(&buf, string, -1);
+ Tcl_DStringAppend(&buf, string, TCL_INDEX_NONE);
}
- result = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), -1, 0);
+ result = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), TCL_INDEX_NONE, 0);
Tcl_DStringFree(&buf);
return result;
}
@@ -7192,7 +7192,7 @@ ExprIsqrtFunc(
negarg:
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "square root of negative argument", -1));
+ "square root of negative argument", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "ARITH", "DOMAIN",
"domain error: argument not in valid range", NULL);
return TCL_ERROR;
@@ -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", -1));
+ "tailcall can only be called from a proc, lambda or method", TCL_INDEX_NONE));
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, -1);
+ nsObjPtr = Tcl_NewStringObj(nsPtr->fullName, TCL_INDEX_NONE);
listPtr = Tcl_NewListObj(objc, objv);
TclListObjSetElement(interp, listPtr, 0, nsObjPtr);
@@ -8968,7 +8968,7 @@ TclNRYieldObjCmd(
if (!corPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "yield can only be called in a coroutine", -1));
+ "yield can only be called in a coroutine", TCL_INDEX_NONE));
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", -1));
+ "yieldto can only be called in a coroutine", TCL_INDEX_NONE));
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", -1));
+ "yieldto called in deleted namespace", TCL_INDEX_NONE));
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, -1);
+ nsObjPtr = Tcl_NewStringObj(nsPtr->fullName, TCL_INDEX_NONE);
TclListObjSetElement(interp, listPtr, 0, nsObjPtr);
/*
@@ -9243,7 +9243,7 @@ TclNRCoroutineActivateCallback(
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "cannot yield: C stack busy", -1));
+ "cannot yield: C stack busy", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "COROUTINE", "CANT_YIELD",
NULL);
return TCL_ERROR;
@@ -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", -1));
+ "can only get coroutine type of a coroutine", TCL_INDEX_NONE));
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", -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("active", TCL_INDEX_NONE));
return TCL_OK;
}
@@ -9356,14 +9356,14 @@ CoroTypeObjCmd(
switch (corPtr->nargs) {
case COROUTINE_ARGUMENTS_SINGLE_OPTIONAL:
- Tcl_SetObjResult(interp, Tcl_NewStringObj("yield", -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("yield", TCL_INDEX_NONE));
return TCL_OK;
case COROUTINE_ARGUMENTS_ARBITRARY:
- Tcl_SetObjResult(interp, Tcl_NewStringObj("yieldto", -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("yieldto", TCL_INDEX_NONE));
return TCL_OK;
default:
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "unknown coroutine type", -1));
+ "unknown coroutine type", TCL_INDEX_NONE));
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, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(errMsg, TCL_INDEX_NONE));
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", -1));
+ "can only inject a command into a suspended coroutine", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "COROUTINE", "ACTIVE", NULL);
return TCL_ERROR;
}
@@ -9560,10 +9560,10 @@ InjectHandler(
if (nargs == COROUTINE_ARGUMENTS_SINGLE_OPTIONAL) {
Tcl_ListObjAppendElement(NULL, listPtr,
- Tcl_NewStringObj("yield", -1));
+ Tcl_NewStringObj("yield", TCL_INDEX_NONE));
} else if (nargs == COROUTINE_ARGUMENTS_ARBITRARY) {
Tcl_ListObjAppendElement(NULL, listPtr,
- Tcl_NewStringObj("yieldto", -1));
+ Tcl_NewStringObj("yieldto", TCL_INDEX_NONE));
} else {
/*
* I don't think this is reachable...
@@ -9662,7 +9662,7 @@ NRInjectObjCmd(
}
if (!COR_IS_SUSPENDED(corPtr)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "can only inject a command into a suspended coroutine", -1));
+ "can only inject a command into a suspended coroutine", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "COROUTINE", "ACTIVE", NULL);
return TCL_ERROR;
}
@@ -9716,7 +9716,7 @@ TclNRInterpCoroutine(
if (corPtr->nargs + 1 != (size_t)objc) {
Tcl_SetObjResult(interp,
Tcl_NewStringObj("wrong coro nargs; how did we get here? "
- "not implemented!", -1));
+ "not implemented!", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "WRONGARGS", NULL);
return TCL_ERROR;
}
diff --git a/generic/tclBinary.c b/generic/tclBinary.c
index e0d99c7..1083533 100644
--- a/generic/tclBinary.c
+++ b/generic/tclBinary.c
@@ -395,7 +395,7 @@ TclGetBytesFromObj(
if (interp) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "byte sequence length exceeds INT_MAX", -1));
+ "byte sequence length exceeds INT_MAX", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "API", "OUTDATED", NULL);
}
return NULL;
@@ -1003,7 +1003,7 @@ BinaryFormatCmd(
case 'x':
if (count == BINARY_ALL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "cannot use \"*\" in format string with \"x\"", -1));
+ "cannot use \"*\" in format string with \"x\"", TCL_INDEX_NONE));
return TCL_ERROR;
} else if (count == BINARY_NOCOUNT) {
count = 1;
@@ -1343,7 +1343,7 @@ BinaryFormatCmd(
}
error:
- Tcl_SetObjResult(interp, Tcl_NewStringObj(errorString, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(errorString, TCL_INDEX_NONE));
return TCL_ERROR;
}
@@ -1724,7 +1724,7 @@ BinaryScanCmd(
}
error:
- Tcl_SetObjResult(interp, Tcl_NewStringObj(errorString, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(errorString, TCL_INDEX_NONE));
return TCL_ERROR;
}
@@ -2654,7 +2654,7 @@ BinaryEncode64(
}
if (maxlen < 0) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "line length out of range", -1));
+ "line length out of range", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "BINARY", "ENCODE",
"LINE_LENGTH", NULL);
return TCL_ERROR;
@@ -2782,7 +2782,7 @@ BinaryEncodeUu(
}
if (lineLength < 5 || lineLength > 85) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "line length out of range", -1));
+ "line length out of range", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "BINARY", "ENCODE",
"LINE_LENGTH", NULL);
return TCL_ERROR;
diff --git a/generic/tclCkalloc.c b/generic/tclCkalloc.c
index f7cab9f..6f31940 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, -1);
+ Tcl_AppendToObj((Tcl_Obj *) clientData, buf, TCL_INDEX_NONE);
}
return 1;
}
diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c
index 69d4484..e1949a5 100644
--- a/generic/tclCmdIL.c
+++ b/generic/tclCmdIL.c
@@ -504,7 +504,7 @@ InfoArgsCmd(
localPtr = localPtr->nextPtr) {
if (TclIsVarArgument(localPtr)) {
Tcl_ListObjAppendElement(interp, listObjPtr,
- Tcl_NewStringObj(localPtr->name, -1));
+ Tcl_NewStringObj(localPtr->name, TCL_INDEX_NONE));
}
}
Tcl_SetObjResult(interp, listObjPtr);
@@ -716,7 +716,7 @@ InfoCommandsCmd(
Tcl_GetCommandFullName(interp, cmd, elemObjPtr);
} else {
cmdName = (const char *)Tcl_GetHashKey(&nsPtr->cmdTable, entryPtr);
- elemObjPtr = Tcl_NewStringObj(cmdName, -1);
+ elemObjPtr = Tcl_NewStringObj(cmdName, TCL_INDEX_NONE);
}
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, -1));
+ Tcl_NewStringObj(cmdName, TCL_INDEX_NONE));
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, -1);
+ elemObjPtr = Tcl_NewStringObj(cmdName, TCL_INDEX_NONE);
}
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, -1));
+ Tcl_NewStringObj(cmdName, TCL_INDEX_NONE));
}
}
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, -1);
+ elemObjPtr = Tcl_NewStringObj(cmdName, TCL_INDEX_NONE);
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, -1);
+ elemObjPtr = Tcl_NewStringObj(cmdName, TCL_INDEX_NONE);
(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, -1);
+ elemObjPtr = Tcl_NewStringObj(cmdName, TCL_INDEX_NONE);
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], -1));
+ ADD_PAIR("type", Tcl_NewStringObj(typeString[framePtr->type], TCL_INDEX_NONE));
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], -1));
+ ADD_PAIR("type", Tcl_NewStringObj(typeString[framePtr->type], TCL_INDEX_NONE));
break;
case TCL_LOCATION_BC: {
@@ -1330,7 +1330,7 @@ TclInfoFrame(
* Possibly modified: type, path!
*/
- ADD_PAIR("type", Tcl_NewStringObj(typeString[fPtr->type], -1));
+ ADD_PAIR("type", Tcl_NewStringObj(typeString[fPtr->type], TCL_INDEX_NONE));
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], -1));
+ ADD_PAIR("type", Tcl_NewStringObj(typeString[framePtr->type], TCL_INDEX_NONE));
ADD_PAIR("line", Tcl_NewWideIntObj(framePtr->line[0]));
ADD_PAIR("file", framePtr->data.eval.path);
@@ -1404,7 +1404,7 @@ TclInfoFrame(
*/
for (i=0 ; i<efiPtr->length ; i++) {
- lv[lc++] = Tcl_NewStringObj(efiPtr->fields[i].name, -1);
+ lv[lc++] = Tcl_NewStringObj(efiPtr->fields[i].name, TCL_INDEX_NONE);
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]] ", -1);
+" } [::namespace current]] ", TCL_INDEX_NONE);
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, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(name, TCL_INDEX_NONE));
return TCL_OK;
}
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "unable to determine name of host", -1));
+ "unable to determine name of host", TCL_INDEX_NONE));
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, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(libDirName, TCL_INDEX_NONE));
return TCL_OK;
}
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "no library has been specified for Tcl", -1));
+ "no library has been specified for Tcl", TCL_INDEX_NONE));
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, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(patchlevel, TCL_INDEX_NONE));
return TCL_OK;
}
return TCL_ERROR;
@@ -1910,7 +1910,7 @@ InfoProcsCmd(
Tcl_GetCommandFullName(interp, (Tcl_Command) cmdPtr,
elemObjPtr);
} else {
- elemObjPtr = Tcl_NewStringObj(simplePattern, -1);
+ elemObjPtr = Tcl_NewStringObj(simplePattern, TCL_INDEX_NONE);
}
Tcl_ListObjAppendElement(interp, listPtr, elemObjPtr);
}
@@ -1938,7 +1938,7 @@ InfoProcsCmd(
Tcl_GetCommandFullName(interp, (Tcl_Command) cmdPtr,
elemObjPtr);
} else {
- elemObjPtr = Tcl_NewStringObj(cmdName, -1);
+ elemObjPtr = Tcl_NewStringObj(cmdName, TCL_INDEX_NONE);
}
Tcl_ListObjAppendElement(interp, listPtr, elemObjPtr);
}
@@ -1977,7 +1977,7 @@ InfoProcsCmd(
if (TclIsProc(cmdPtr) || ((realCmdPtr != NULL)
&& TclIsProc(realCmdPtr))) {
Tcl_ListObjAppendElement(interp, listPtr,
- Tcl_NewStringObj(cmdName, -1));
+ Tcl_NewStringObj(cmdName, TCL_INDEX_NONE));
}
}
}
@@ -2075,7 +2075,7 @@ InfoSharedlibCmd(
}
#ifdef TCL_SHLIB_EXT
- Tcl_SetObjResult(interp, Tcl_NewStringObj(TCL_SHLIB_EXT, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(TCL_SHLIB_EXT, TCL_INDEX_NONE));
#endif
return TCL_OK;
}
@@ -2172,7 +2172,7 @@ InfoCmdTypeCmd(
Tcl_AppendResult(interp, "native", NULL);
} else {
Tcl_SetObjResult(interp,
- Tcl_NewStringObj(TclGetCommandTypeName(command), -1));
+ Tcl_NewStringObj(TclGetCommandTypeName(command), TCL_INDEX_NONE));
}
return TCL_OK;
}
@@ -2652,7 +2652,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", -1));
+ "index \"end\" out of range", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "VALUE", "INDEX"
"OUTOFRANGE", NULL);
return TCL_ERROR;
@@ -3374,7 +3374,7 @@ Tcl_LsearchObjCmd(
}
if (i + 4 > (size_t)objc) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "missing starting index", -1));
+ "missing starting index", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "ARGUMENT", "MISSING", NULL);
result = TCL_ERROR;
goto done;
@@ -3398,7 +3398,7 @@ Tcl_LsearchObjCmd(
if (i + 4 > (size_t)objc) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"\"-stride\" option must be "
- "followed by stride length", -1));
+ "followed by stride length", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "ARGUMENT", "MISSING", NULL);
result = TCL_ERROR;
goto done;
@@ -3409,7 +3409,7 @@ Tcl_LsearchObjCmd(
}
if (wide < 1) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "stride length must be at least 1", -1));
+ "stride length must be at least 1", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "LSEARCH",
"BADSTRIDE", NULL);
result = TCL_ERROR;
@@ -3499,7 +3499,7 @@ Tcl_LsearchObjCmd(
if (returnSubindices && sortInfo.indexc==0) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "-subindices cannot be used without -index option", -1));
+ "-subindices cannot be used without -index option", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "LSEARCH",
"BAD_OPTION_MIX", NULL);
result = TCL_ERROR;
@@ -3508,7 +3508,7 @@ Tcl_LsearchObjCmd(
if (bisect && (allMatches || negatedMatch)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "-bisect is not compatible with -all or -not", -1));
+ "-bisect is not compatible with -all or -not", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "LSEARCH",
"BAD_OPTION_MIX", NULL);
result = TCL_ERROR;
@@ -3578,7 +3578,7 @@ Tcl_LsearchObjCmd(
if (groupOffset >= groupSize) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"when used with \"-stride\", the leading \"-index\""
- " value must be within the group", -1));
+ " value must be within the group", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "LSEARCH",
"BADINDEX", NULL);
result = TCL_ERROR;
@@ -4551,7 +4551,7 @@ Tcl_LsortObjCmd(
if (i + 2 == (size_t)objc) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"\"-command\" option must be followed "
- "by comparison command", -1));
+ "by comparison command", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "ARGUMENT", "MISSING", NULL);
sortInfo.resultCode = TCL_ERROR;
goto done;
@@ -4638,7 +4638,7 @@ Tcl_LsortObjCmd(
if (i + 2 == (size_t)objc) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"\"-stride\" option must be "
- "followed by stride length", -1));
+ "followed by stride length", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "ARGUMENT", "MISSING", NULL);
sortInfo.resultCode = TCL_ERROR;
goto done;
@@ -4649,7 +4649,7 @@ Tcl_LsortObjCmd(
}
if (wide < 2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "stride length must be at least 2", -1));
+ "stride length must be at least 2", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "LSORT",
"BADSTRIDE", NULL);
sortInfo.resultCode = TCL_ERROR;
@@ -4771,7 +4771,7 @@ Tcl_LsortObjCmd(
if (groupOffset >= groupSize) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"when used with \"-stride\", the leading \"-index\""
- " value must be within the group", -1));
+ " value must be within the group", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "LSORT",
"BADINDEX", NULL);
sortInfo.resultCode = TCL_ERROR;
@@ -5298,7 +5298,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", -1));
+ "-compare command returned non-integer result", TCL_INDEX_NONE));
Tcl_SetErrorCode(infoPtr->interp, "TCL", "OPERATION", "LSORT",
"COMPARISONFAILED", NULL);
infoPtr->resultCode = TCL_ERROR;
diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c
index f497f59..77c8cb4 100644
--- a/generic/tclCmdMZ.c
+++ b/generic/tclCmdMZ.c
@@ -227,7 +227,7 @@ Tcl_RegexpObjCmd(
if (doinline && ((objc - 2) != 0)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "regexp match variables not allowed when using -inline", -1));
+ "regexp match variables not allowed when using -inline", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "REGEXP",
"MIX_VAR_INLINE", NULL);
goto optionError;
@@ -1695,7 +1695,7 @@ StringIsCmd(
goto str_is_done;
}
end = string1 + length1;
- if (TclParseNumber(NULL, objPtr, NULL, NULL, -1,
+ if (TclParseNumber(NULL, objPtr, NULL, NULL, TCL_INDEX_NONE,
(const char **) &stop, 0) != TCL_OK) {
result = 0;
failat = 0;
@@ -1725,7 +1725,7 @@ StringIsCmd(
goto str_is_done;
}
end = string1 + length1;
- if (TclParseNumber(NULL, objPtr, NULL, NULL, -1,
+ if (TclParseNumber(NULL, objPtr, NULL, NULL, TCL_INDEX_NONE,
(const char **) &stop, TCL_PARSE_INTEGER_ONLY) == TCL_OK) {
if (stop == end) {
/*
@@ -1776,7 +1776,7 @@ StringIsCmd(
break;
}
end = string1 + length1;
- if (TclParseNumber(NULL, objPtr, NULL, NULL, -1,
+ if (TclParseNumber(NULL, objPtr, NULL, NULL, TCL_INDEX_NONE,
(const char **) &stop, TCL_PARSE_INTEGER_ONLY) == TCL_OK) {
if (stop == end) {
/*
@@ -2047,7 +2047,7 @@ StringMapCmd(
*/
Tcl_SetObjResult(interp,
- Tcl_NewStringObj("char map list unbalanced", -1));
+ Tcl_NewStringObj("char map list unbalanced", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "MAP",
"UNBALANCED", NULL);
return TCL_ERROR;
@@ -2933,7 +2933,7 @@ StringLowerCmd(
length2 = Tcl_UtfToLower(string2);
Tcl_SetObjLength(resultPtr, length2 + (start - string1));
- Tcl_AppendToObj(resultPtr, end, -1);
+ Tcl_AppendToObj(resultPtr, end, TCL_INDEX_NONE);
Tcl_SetObjResult(interp, resultPtr);
}
@@ -3018,7 +3018,7 @@ StringUpperCmd(
length2 = Tcl_UtfToUpper(string2);
Tcl_SetObjLength(resultPtr, length2 + (start - string1));
- Tcl_AppendToObj(resultPtr, end, -1);
+ Tcl_AppendToObj(resultPtr, end, TCL_INDEX_NONE);
Tcl_SetObjResult(interp, resultPtr);
}
@@ -3103,7 +3103,7 @@ StringTitleCmd(
length2 = Tcl_UtfToTitle(string2);
Tcl_SetObjLength(resultPtr, length2 + (start - string1));
- Tcl_AppendToObj(resultPtr, end, -1);
+ Tcl_AppendToObj(resultPtr, end, TCL_INDEX_NONE);
Tcl_SetObjResult(interp, resultPtr);
}
@@ -3612,7 +3612,7 @@ TclNRSwitchObjCmd(
if (objc % 2) {
Tcl_ResetResult(interp);
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "extra switch pattern with no body", -1));
+ "extra switch pattern with no body", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "SWITCH", "BADARM",
NULL);
@@ -3630,7 +3630,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", -1);
+ " \"switch\" documentation", TCL_INDEX_NONE);
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "SWITCH",
"BADARM", "COMMENT?", NULL);
break;
@@ -3980,7 +3980,7 @@ Tcl_ThrowObjCmd(
return TCL_ERROR;
} else if (len < 1) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "type must be non-empty list", -1));
+ "type must be non-empty list", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "THROW", "BADEXCEPTION",
NULL);
return TCL_ERROR;
@@ -4718,7 +4718,7 @@ TclNRTryObjCmd(
case TryFinally: /* finally script */
if (i < objc-2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "finally clause must be last", -1));
+ "finally clause must be last", TCL_INDEX_NONE));
Tcl_DecrRefCount(handlersObj);
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "TRY", "FINALLY",
"NONTERMINAL", NULL);
@@ -4726,7 +4726,7 @@ TclNRTryObjCmd(
} else if (i == objc-1) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"wrong # args to finally clause: must be"
- " \"... finally script\"", -1));
+ " \"... finally script\"", TCL_INDEX_NONE));
Tcl_DecrRefCount(handlersObj);
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "TRY", "FINALLY",
"ARGUMENT", NULL);
@@ -4739,7 +4739,7 @@ TclNRTryObjCmd(
if (i > objc-4) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"wrong # args to on clause: must be \"... on code"
- " variableList script\"", -1));
+ " variableList script\"", TCL_INDEX_NONE));
Tcl_DecrRefCount(handlersObj);
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "TRY", "ON",
"ARGUMENT", NULL);
@@ -4800,7 +4800,7 @@ TclNRTryObjCmd(
}
if (bodyShared) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "last non-finally clause must not have a body of \"-\"", -1));
+ "last non-finally clause must not have a body of \"-\"", TCL_INDEX_NONE));
Tcl_DecrRefCount(handlersObj);
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "TRY", "BADFALLTHROUGH",
NULL);
diff --git a/generic/tclCompCmds.c b/generic/tclCompCmds.c
index cb3cf1e..3a61a94 100644
--- a/generic/tclCompCmds.c
+++ b/generic/tclCompCmds.c
@@ -2300,7 +2300,7 @@ PrintDictUpdateInfo(
for (i=0 ; i<duiPtr->length ; i++) {
if (i) {
- Tcl_AppendToObj(appendObj, ", ", -1);
+ Tcl_AppendToObj(appendObj, ", ", TCL_INDEX_NONE);
}
Tcl_AppendPrintfToObj(appendObj, "%%v%" TCL_Z_MODIFIER "u", duiPtr->varIndices[i]);
}
@@ -2322,7 +2322,7 @@ DisassembleDictUpdateInfo(
Tcl_ListObjAppendElement(NULL, variables,
Tcl_NewWideIntObj(duiPtr->varIndices[i]));
}
- Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("variables", -1),
+ Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("variables", TCL_INDEX_NONE),
variables);
}
@@ -2982,11 +2982,11 @@ PrintForeachInfo(
ForeachVarList *varsPtr;
size_t i, j;
- Tcl_AppendToObj(appendObj, "data=[", -1);
+ Tcl_AppendToObj(appendObj, "data=[", TCL_INDEX_NONE);
for (i=0 ; i<infoPtr->numLists ; i++) {
if (i) {
- Tcl_AppendToObj(appendObj, ", ", -1);
+ Tcl_AppendToObj(appendObj, ", ", TCL_INDEX_NONE);
}
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, ",", -1);
+ Tcl_AppendToObj(appendObj, ",", TCL_INDEX_NONE);
}
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, ", ", -1);
+ Tcl_AppendToObj(appendObj, ", ", TCL_INDEX_NONE);
}
Tcl_AppendPrintfToObj(appendObj, "%%v%" TCL_Z_MODIFIER "u",
varsPtr->varIndexes[j]);
}
- Tcl_AppendToObj(appendObj, "]", -1);
+ Tcl_AppendToObj(appendObj, "]", TCL_INDEX_NONE);
}
}
@@ -3026,18 +3026,18 @@ PrintNewForeachInfo(
infoPtr->loopCtTemp);
for (i=0 ; i<infoPtr->numLists ; i++) {
if (i) {
- Tcl_AppendToObj(appendObj, ",", -1);
+ Tcl_AppendToObj(appendObj, ",", TCL_INDEX_NONE);
}
- Tcl_AppendToObj(appendObj, "[", -1);
+ Tcl_AppendToObj(appendObj, "[", TCL_INDEX_NONE);
varsPtr = infoPtr->varLists[i];
for (j=0 ; j<varsPtr->numVars ; j++) {
if (j) {
- Tcl_AppendToObj(appendObj, ",", -1);
+ Tcl_AppendToObj(appendObj, ",", TCL_INDEX_NONE);
}
Tcl_AppendPrintfToObj(appendObj, "%%v%" TCL_Z_MODIFIER "u",
varsPtr->varIndexes[j]);
}
- Tcl_AppendToObj(appendObj, "]", -1);
+ Tcl_AppendToObj(appendObj, "]", TCL_INDEX_NONE);
}
}
@@ -3062,13 +3062,13 @@ DisassembleForeachInfo(
Tcl_ListObjAppendElement(NULL, objPtr,
Tcl_NewWideIntObj(infoPtr->firstValueTemp + i));
}
- Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("data", -1), objPtr);
+ Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("data", TCL_INDEX_NONE), objPtr);
/*
* Loop counter.
*/
- Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("loop", -1),
+ Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("loop", TCL_INDEX_NONE),
Tcl_NewWideIntObj(infoPtr->loopCtTemp));
/*
@@ -3085,7 +3085,7 @@ DisassembleForeachInfo(
}
Tcl_ListObjAppendElement(NULL, objPtr, innerPtr);
}
- Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("assign", -1), objPtr);
+ Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("assign", TCL_INDEX_NONE), objPtr);
}
static void
@@ -3104,7 +3104,7 @@ DisassembleNewForeachInfo(
* Jump offset.
*/
- Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("jumpOffset", -1),
+ Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("jumpOffset", TCL_INDEX_NONE),
Tcl_NewWideIntObj(infoPtr->loopCtTemp));
/*
@@ -3121,7 +3121,7 @@ DisassembleNewForeachInfo(
}
Tcl_ListObjAppendElement(NULL, objPtr, innerPtr);
}
- Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("assign", -1), objPtr);
+ Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("assign", TCL_INDEX_NONE), objPtr);
}
/*
diff --git a/generic/tclCompCmdsSZ.c b/generic/tclCompCmdsSZ.c
index 0e98584..b86aa43 100644
--- a/generic/tclCompCmdsSZ.c
+++ b/generic/tclCompCmdsSZ.c
@@ -2604,9 +2604,9 @@ PrintJumptableInfo(
offset = PTR2INT(Tcl_GetHashValue(hPtr));
if (i++) {
- Tcl_AppendToObj(appendObj, ", ", -1);
+ Tcl_AppendToObj(appendObj, ", ", TCL_INDEX_NONE);
if (i%4==0) {
- Tcl_AppendToObj(appendObj, "\n\t\t", -1);
+ Tcl_AppendToObj(appendObj, "\n\t\t", TCL_INDEX_NONE);
}
}
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, -1),
+ Tcl_DictObjPut(NULL, mapping, Tcl_NewStringObj(keyPtr, TCL_INDEX_NONE),
Tcl_NewWideIntObj(offset));
}
- Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("mapping", -1), mapping);
+ Tcl_DictObjPut(NULL, dictObj, Tcl_NewStringObj("mapping", TCL_INDEX_NONE), mapping);
}
/*
@@ -4081,7 +4081,7 @@ CompileAssociativeBinaryOpCmd(
CompileWord(envPtr, tokenPtr, interp, words);
}
if (parsePtr->numWords <= 2) {
- PushLiteral(envPtr, identity, -1);
+ PushLiteral(envPtr, identity, TCL_INDEX_NONE);
words++;
}
if (words > 3) {
diff --git a/generic/tclCompExpr.c b/generic/tclCompExpr.c
index b7bcf7c..c503304 100644
--- a/generic/tclCompExpr.c
+++ b/generic/tclCompExpr.c
@@ -798,14 +798,14 @@ ParseExpr(
switch (start[1]) {
case 'b':
Tcl_AppendToObj(post,
- " (invalid binary number?)", -1);
+ " (invalid binary number?)", TCL_INDEX_NONE);
parsePtr->errorType = TCL_PARSE_BAD_NUMBER;
errCode = "BADNUMBER";
subErrCode = "BINARY";
break;
case 'o':
Tcl_AppendToObj(post,
- " (invalid octal number?)", -1);
+ " (invalid octal number?)", TCL_INDEX_NONE);
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?)", -1);
+ " (invalid octal number?)", TCL_INDEX_NONE);
parsePtr->errorType = TCL_PARSE_BAD_NUMBER;
errCode = "BADNUMBER";
subErrCode = "OCTAL";
@@ -1462,7 +1462,7 @@ ParseExpr(
*/
if (post != NULL) {
- Tcl_AppendToObj(msg, ";\n", -1);
+ Tcl_AppendToObj(msg, ";\n", TCL_INDEX_NONE);
Tcl_AppendObjToObj(msg, post);
Tcl_DecrRefCount(post);
}
diff --git a/generic/tclCompile.c b/generic/tclCompile.c
index 9708255..be308e3 100644
--- a/generic/tclCompile.c
+++ b/generic/tclCompile.c
@@ -2161,7 +2161,7 @@ TclCompileScript(
*/
if (iPtr->numLevels / 5 > iPtr->maxNestingDepth / 4) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "too many nested compilations (infinite loop?)", -1));
+ "too many nested compilations (infinite loop?)", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "LIMIT", "STACK", NULL);
TclCompileSyntaxError(interp, envPtr);
return;
diff --git a/generic/tclConfig.c b/generic/tclConfig.c
index 1ece31c..17490bd 100644
--- a/generic/tclConfig.c
+++ b/generic/tclConfig.c
@@ -85,7 +85,7 @@ Tcl_RegisterConfig(
} else {
cdPtr->encoding = NULL;
}
- cdPtr->pkg = Tcl_NewStringObj(pkgName, -1);
+ cdPtr->pkg = Tcl_NewStringObj(pkgName, TCL_INDEX_NONE);
/*
* 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, -1),
+ Tcl_DictObjPut(interp, pkgDict, Tcl_NewStringObj(cfg->key, TCL_INDEX_NONE),
Tcl_NewByteArrayObj((unsigned char *)cfg->value, strlen(cfg->value)));
}
@@ -144,7 +144,7 @@ Tcl_RegisterConfig(
Tcl_DStringInit(&cmdName);
TclDStringAppendLiteral(&cmdName, "::");
- Tcl_DStringAppend(&cmdName, pkgName, -1);
+ Tcl_DStringAppend(&cmdName, pkgName, TCL_INDEX_NONE);
/*
* The incomplete command name is the name of the namespace to place it
@@ -227,7 +227,7 @@ QueryConfigObjCmd(
* present.
*/
- Tcl_SetObjResult(interp, Tcl_NewStringObj("package not known", -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("package not known", TCL_INDEX_NONE));
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", -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("key not known", TCL_INDEX_NONE));
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", -1));
+ "insufficient memory to create list", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "MEMORY", NULL);
return TCL_ERROR;
}
diff --git a/generic/tclDecls.h b/generic/tclDecls.h
index d8d8ddb..ec9a49a 100644
--- a/generic/tclDecls.h
+++ b/generic/tclDecls.h
@@ -3973,14 +3973,14 @@ extern const TclStubs *tclStubsPtr;
/* Handle Win64 tk.dll being loaded in Cygwin64. */
# define Tcl_GetTime(t) \
do { \
- union { \
+ struct { \
Tcl_Time now; \
long long reserved; \
} _t; \
_t.reserved = -1; \
tclStubsPtr->tcl_GetTime((&_t.now)); \
if (_t.reserved != -1) { \
- _t.now.usec = _t.reserved; \
+ _t.now.usec = (long) _t.reserved; \
} \
*(t) = _t.now; \
} while (0)
diff --git a/generic/tclDictObj.c b/generic/tclDictObj.c
index 04a909f..5c18c8a 100644
--- a/generic/tclDictObj.c
+++ b/generic/tclDictObj.c
@@ -717,7 +717,7 @@ SetDictFromAny(
missingValue:
if (interp != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "missing value to go with key", -1));
+ "missing value to go with key", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "VALUE", "DICTIONARY", NULL);
}
errorInFindDictElement:
@@ -2119,7 +2119,7 @@ DictInfoCmd(
}
statsStr = Tcl_HashStats(&dict->table);
- Tcl_SetObjResult(interp, Tcl_NewStringObj(statsStr, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(statsStr, TCL_INDEX_NONE));
Tcl_Free(statsStr);
return TCL_OK;
}
@@ -2481,7 +2481,7 @@ DictForNRCmd(
}
if (varc != 2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "must have exactly two variable names", -1));
+ "must have exactly two variable names", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "SYNTAX", "dict", "for", NULL);
return TCL_ERROR;
}
@@ -2676,7 +2676,7 @@ DictMapNRCmd(
}
if (varc != 2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "must have exactly two variable names", -1));
+ "must have exactly two variable names", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "SYNTAX", "dict", "map", NULL);
return TCL_ERROR;
}
@@ -3116,7 +3116,7 @@ DictFilterCmd(
}
if (varc != 2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "must have exactly two variable names", -1));
+ "must have exactly two variable names", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "SYNTAX", "dict", "filter", NULL);
return TCL_ERROR;
}
diff --git a/generic/tclDisassemble.c b/generic/tclDisassemble.c
index 57adcf0..c06731f 100644
--- a/generic/tclDisassemble.c
+++ b/generic/tclDisassemble.c
@@ -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 ", -1);
+ Tcl_AppendToObj(bufferObj, " Source ", TCL_INDEX_NONE);
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", -1);
+ Tcl_AppendToObj(bufferObj, "\n", TCL_INDEX_NONE);
} else {
Tcl_AppendPrintfToObj(bufferObj, ", \"%s\"\n",
localPtr->name);
@@ -389,7 +389,7 @@ DisassembleByteCodeObj(
if (numCmds == 0) {
pc = codeStart;
while (pc < codeLimit) {
- Tcl_AppendToObj(bufferObj, " ", -1);
+ Tcl_AppendToObj(bufferObj, " ", TCL_INDEX_NONE);
pc += FormatInstruction(codePtr, pc, bufferObj);
}
return bufferObj;
@@ -451,7 +451,7 @@ DisassembleByteCodeObj(
srcOffset, (srcOffset + srcLen - 1));
}
if (numCmds > 0) {
- Tcl_AppendToObj(bufferObj, "\n", -1);
+ Tcl_AppendToObj(bufferObj, "\n", TCL_INDEX_NONE);
}
/*
@@ -500,14 +500,14 @@ DisassembleByteCodeObj(
*/
while ((pc-codeStart) < codeOffset) {
- Tcl_AppendToObj(bufferObj, " ", -1);
+ Tcl_AppendToObj(bufferObj, " ", TCL_INDEX_NONE);
pc += FormatInstruction(codePtr, pc, bufferObj);
}
Tcl_AppendPrintfToObj(bufferObj, " Command %d: ", i+1);
PrintSourceToObj(bufferObj, (codePtr->source + srcOffset),
TclMin(srcLen, 55));
- Tcl_AppendToObj(bufferObj, "\n", -1);
+ Tcl_AppendToObj(bufferObj, "\n", TCL_INDEX_NONE);
}
if (pc < codeLimit) {
/*
@@ -515,7 +515,7 @@ DisassembleByteCodeObj(
*/
while (pc < codeLimit) {
- Tcl_AppendToObj(bufferObj, " ", -1);
+ Tcl_AppendToObj(bufferObj, " ", TCL_INDEX_NONE);
pc += FormatInstruction(codePtr, pc, bufferObj);
}
}
@@ -654,7 +654,7 @@ FormatInstruction(
const char *bytes;
size_t length;
- Tcl_AppendToObj(bufferObj, "\t# ", -1);
+ Tcl_AppendToObj(bufferObj, "\t# ", TCL_INDEX_NONE);
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", -1);
+ Tcl_AppendToObj(bufferObj, "\n", TCL_INDEX_NONE);
if (auxPtr && auxPtr->type->printProc) {
- Tcl_AppendToObj(bufferObj, "\t\t[", -1);
+ Tcl_AppendToObj(bufferObj, "\t\t[", TCL_INDEX_NONE);
auxPtr->type->printProc(auxPtr->clientData, bufferObj, codePtr,
pcOffset);
- Tcl_AppendToObj(bufferObj, "]\n", -1);
+ Tcl_AppendToObj(bufferObj, "]\n", TCL_INDEX_NONE);
}
return numBytes;
}
@@ -866,11 +866,11 @@ PrintSourceToObj(
size_t i = 0, len;
if (stringPtr == NULL) {
- Tcl_AppendToObj(appendObj, "\"\"", -1);
+ Tcl_AppendToObj(appendObj, "\"\"", TCL_INDEX_NONE);
return;
}
- Tcl_AppendToObj(appendObj, "\"", -1);
+ Tcl_AppendToObj(appendObj, "\"", TCL_INDEX_NONE);
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, "\\\"", -1);
+ Tcl_AppendToObj(appendObj, "\\\"", TCL_INDEX_NONE);
i += 2;
continue;
case '\f':
- Tcl_AppendToObj(appendObj, "\\f", -1);
+ Tcl_AppendToObj(appendObj, "\\f", TCL_INDEX_NONE);
i += 2;
continue;
case '\n':
- Tcl_AppendToObj(appendObj, "\\n", -1);
+ Tcl_AppendToObj(appendObj, "\\n", TCL_INDEX_NONE);
i += 2;
continue;
case '\r':
- Tcl_AppendToObj(appendObj, "\\r", -1);
+ Tcl_AppendToObj(appendObj, "\\r", TCL_INDEX_NONE);
i += 2;
continue;
case '\t':
- Tcl_AppendToObj(appendObj, "\\t", -1);
+ Tcl_AppendToObj(appendObj, "\\t", TCL_INDEX_NONE);
i += 2;
continue;
case '\v':
- Tcl_AppendToObj(appendObj, "\\v", -1);
+ Tcl_AppendToObj(appendObj, "\\v", TCL_INDEX_NONE);
i += 2;
continue;
default:
@@ -916,9 +916,9 @@ PrintSourceToObj(
}
}
if (*p != '\0') {
- Tcl_AppendToObj(appendObj, "...", -1);
+ Tcl_AppendToObj(appendObj, "...", TCL_INDEX_NONE);
}
- Tcl_AppendToObj(appendObj, "\"", -1);
+ Tcl_AppendToObj(appendObj, "\"", TCL_INDEX_NONE);
}
/*
@@ -972,33 +972,33 @@ DisassembleByteCodeAsDicts(
TclNewObj(descriptor[0]);
if (!(localPtr->flags & (VAR_ARRAY|VAR_LINK))) {
Tcl_ListObjAppendElement(NULL, descriptor[0],
- Tcl_NewStringObj("scalar", -1));
+ Tcl_NewStringObj("scalar", TCL_INDEX_NONE));
}
if (localPtr->flags & VAR_ARRAY) {
Tcl_ListObjAppendElement(NULL, descriptor[0],
- Tcl_NewStringObj("array", -1));
+ Tcl_NewStringObj("array", TCL_INDEX_NONE));
}
if (localPtr->flags & VAR_LINK) {
Tcl_ListObjAppendElement(NULL, descriptor[0],
- Tcl_NewStringObj("link", -1));
+ Tcl_NewStringObj("link", TCL_INDEX_NONE));
}
if (localPtr->flags & VAR_ARGUMENT) {
Tcl_ListObjAppendElement(NULL, descriptor[0],
- Tcl_NewStringObj("arg", -1));
+ Tcl_NewStringObj("arg", TCL_INDEX_NONE));
}
if (localPtr->flags & VAR_TEMPORARY) {
Tcl_ListObjAppendElement(NULL, descriptor[0],
- Tcl_NewStringObj("temp", -1));
+ Tcl_NewStringObj("temp", TCL_INDEX_NONE));
}
if (localPtr->flags & VAR_RESOLVED) {
Tcl_ListObjAppendElement(NULL, descriptor[0],
- Tcl_NewStringObj("resolved", -1));
+ Tcl_NewStringObj("resolved", TCL_INDEX_NONE));
}
if (localPtr->flags & VAR_TEMPORARY) {
Tcl_ListObjAppendElement(NULL, variables,
Tcl_NewListObj(1, descriptor));
} else {
- descriptor[1] = Tcl_NewStringObj(localPtr->name, -1);
+ descriptor[1] = Tcl_NewStringObj(localPtr->name, TCL_INDEX_NONE);
Tcl_ListObjAppendElement(NULL, variables,
Tcl_NewListObj(2, descriptor));
}
@@ -1016,7 +1016,7 @@ DisassembleByteCodeAsDicts(
TclNewObj(inst);
Tcl_ListObjAppendElement(NULL, inst, Tcl_NewStringObj(
- instDesc->name, -1));
+ instDesc->name, TCL_INDEX_NONE));
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", -1));
+ ".end", TCL_INDEX_NONE));
} 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, -1);
+ Tcl_Obj *auxDesc = Tcl_NewStringObj(auxData->type->name, TCL_INDEX_NONE);
if (auxData->type->disassembleProc) {
Tcl_Obj *desc;
TclNewObj(desc);
- Tcl_DictObjPut(NULL, desc, Tcl_NewStringObj("name", -1), auxDesc);
+ Tcl_DictObjPut(NULL, desc, Tcl_NewStringObj("name", TCL_INDEX_NONE), 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", -1),
+ Tcl_DictObjPut(NULL, cmd, Tcl_NewStringObj("codefrom", TCL_INDEX_NONE),
Tcl_NewWideIntObj(codeOffset));
- Tcl_DictObjPut(NULL, cmd, Tcl_NewStringObj("codeto", -1),
+ Tcl_DictObjPut(NULL, cmd, Tcl_NewStringObj("codeto", TCL_INDEX_NONE),
Tcl_NewWideIntObj(codeOffset + codeLength - 1));
/*
@@ -1198,13 +1198,13 @@ DisassembleByteCodeAsDicts(
* characters are present in the source!
*/
- Tcl_DictObjPut(NULL, cmd, Tcl_NewStringObj("scriptfrom", -1),
+ Tcl_DictObjPut(NULL, cmd, Tcl_NewStringObj("scriptfrom", TCL_INDEX_NONE),
Tcl_NewWideIntObj(Tcl_NumUtfChars(codePtr->source,
sourceOffset)));
- Tcl_DictObjPut(NULL, cmd, Tcl_NewStringObj("scriptto", -1),
+ Tcl_DictObjPut(NULL, cmd, Tcl_NewStringObj("scriptto", TCL_INDEX_NONE),
Tcl_NewWideIntObj(Tcl_NumUtfChars(codePtr->source,
sourceOffset + sourceLength - 1)));
- Tcl_DictObjPut(NULL, cmd, Tcl_NewStringObj("script", -1),
+ Tcl_DictObjPut(NULL, cmd, Tcl_NewStringObj("script", TCL_INDEX_NONE),
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", -1),
+ Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("literals", TCL_INDEX_NONE),
literals);
- Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("variables", -1),
+ Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("variables", TCL_INDEX_NONE),
variables);
- Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("exception", -1), exn);
- Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("instructions", -1),
+ Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("exception", TCL_INDEX_NONE), exn);
+ Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("instructions", TCL_INDEX_NONE),
instructions);
- Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("auxiliary", -1), aux);
- Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("commands", -1),
+ Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("auxiliary", TCL_INDEX_NONE), aux);
+ Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("commands", TCL_INDEX_NONE),
commands);
- Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("script", -1),
+ Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("script", TCL_INDEX_NONE),
Tcl_NewStringObj(codePtr->source, codePtr->numSrcBytes));
- Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("namespace", -1),
- Tcl_NewStringObj(codePtr->nsPtr->fullName, -1));
- Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("stackdepth", -1),
+ 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_NewWideIntObj(codePtr->maxStackDepth));
- Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("exceptdepth", -1),
+ Tcl_DictObjPut(NULL, description, Tcl_NewStringObj("exceptdepth", TCL_INDEX_NONE),
Tcl_NewWideIntObj(codePtr->maxExceptDepth));
if (line >= 0) {
Tcl_DictObjPut(NULL, description,
- Tcl_NewStringObj("initiallinenumber", -1),
+ Tcl_NewStringObj("initiallinenumber", TCL_INDEX_NONE),
Tcl_NewWideIntObj(line));
}
if (file) {
Tcl_DictObjPut(NULL, description,
- Tcl_NewStringObj("sourcefile", -1), file);
+ Tcl_NewStringObj("sourcefile", TCL_INDEX_NONE), 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", -1));
+ "body not available for this kind of constructor", TCL_INDEX_NONE));
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", -1));
+ "body not available for this kind of destructor", TCL_INDEX_NONE));
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", -1));
+ "body not available for this kind of method", TCL_INDEX_NONE));
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", -1));
+ "may not disassemble prebuilt bytecode", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "DISASSEMBLE",
"BYTECODE", NULL);
return TCL_ERROR;
diff --git a/generic/tclEnsemble.c b/generic/tclEnsemble.c
index a84b188..98f4ae0 100644
--- a/generic/tclEnsemble.c
+++ b/generic/tclEnsemble.c
@@ -125,7 +125,7 @@ NewNsObj(
if (namespacePtr == TclGetGlobalNamespace(nsPtr->interp)) {
return Tcl_NewStringObj("::", 2);
}
- return Tcl_NewStringObj(nsPtr->fullName, -1);
+ return Tcl_NewStringObj(nsPtr->fullName, TCL_INDEX_NONE);
}
/*
@@ -289,7 +289,7 @@ TclNamespaceEnsembleCmd(
if (len < 1) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"ensemble subcommand implementations "
- "must be non-empty lists", -1));
+ "must be non-empty lists", TCL_INDEX_NONE));
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], -1));
+ Tcl_NewStringObj(ensembleConfigOptions[CONF_MAP], TCL_INDEX_NONE));
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], -1));
+ Tcl_NewStringObj(ensembleConfigOptions[CONF_PARAM], TCL_INDEX_NONE));
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], -1));
+ Tcl_NewStringObj(ensembleConfigOptions[CONF_PREFIX], TCL_INDEX_NONE));
Tcl_GetEnsembleFlags(NULL, token, &flags);
Tcl_ListObjAppendElement(NULL, resultObj,
Tcl_NewBooleanObj(flags & TCL_ENSEMBLE_PREFIX));
@@ -577,7 +577,7 @@ TclNamespaceEnsembleCmd(
if (len < 1) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"ensemble subcommand implementations "
- "must be non-empty lists", -1));
+ "must be non-empty lists", TCL_INDEX_NONE));
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", -1));
+ "option -namespace is read-only", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "ENSEMBLE", "READ_ONLY",
NULL);
goto freeMapAndError;
@@ -798,7 +798,7 @@ Tcl_SetEnsembleSubcommandList(
if (cmdPtr->objProc != TclEnsembleImplementationCmd) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "command is not an ensemble", -1));
+ "command is not an ensemble", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "ENSEMBLE", "NOT_ENSEMBLE", NULL);
return TCL_ERROR;
}
@@ -874,7 +874,7 @@ Tcl_SetEnsembleParameterList(
if (cmdPtr->objProc != TclEnsembleImplementationCmd) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "command is not an ensemble", -1));
+ "command is not an ensemble", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "ENSEMBLE", "NOT_ENSEMBLE", NULL);
return TCL_ERROR;
}
@@ -950,7 +950,7 @@ Tcl_SetEnsembleMappingDict(
if (cmdPtr->objProc != TclEnsembleImplementationCmd) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "command is not an ensemble", -1));
+ "command is not an ensemble", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "ENSEMBLE", "NOT_ENSEMBLE", NULL);
return TCL_ERROR;
}
@@ -1050,7 +1050,7 @@ Tcl_SetEnsembleUnknownHandler(
if (cmdPtr->objProc != TclEnsembleImplementationCmd) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "command is not an ensemble", -1));
+ "command is not an ensemble", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "ENSEMBLE", "NOT_ENSEMBLE", NULL);
return TCL_ERROR;
}
@@ -1116,7 +1116,7 @@ Tcl_SetEnsembleFlags(
if (cmdPtr->objProc != TclEnsembleImplementationCmd) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "command is not an ensemble", -1));
+ "command is not an ensemble", TCL_INDEX_NONE));
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", -1));
+ "command is not an ensemble", TCL_INDEX_NONE));
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", -1));
+ "command is not an ensemble", TCL_INDEX_NONE));
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", -1));
+ "command is not an ensemble", TCL_INDEX_NONE));
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", -1));
+ "command is not an ensemble", TCL_INDEX_NONE));
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", -1));
+ "command is not an ensemble", TCL_INDEX_NONE));
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", -1));
+ "command is not an ensemble", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "ENSEMBLE", "NOT_ENSEMBLE", NULL);
}
return TCL_ERROR;
@@ -1549,7 +1549,7 @@ TclMakeEnsemble(
Tcl_DStringInit(&buf);
Tcl_DStringInit(&hiddenBuf);
TclDStringAppendLiteral(&hiddenBuf, "tcl:");
- Tcl_DStringAppend(&hiddenBuf, name, -1);
+ Tcl_DStringAppend(&hiddenBuf, name, TCL_INDEX_NONE);
TclDStringAppendLiteral(&hiddenBuf, ":");
hiddenLen = Tcl_DStringLength(&hiddenBuf);
if (name[0] == ':' && name[1] == ':') {
@@ -1558,7 +1558,7 @@ TclMakeEnsemble(
*/
cmdName = name;
- Tcl_DStringAppend(&buf, name, -1);
+ Tcl_DStringAppend(&buf, name, TCL_INDEX_NONE);
ensembleFlags = TCL_ENSEMBLE_PREFIX;
} else {
/*
@@ -1574,7 +1574,7 @@ TclMakeEnsemble(
for (i = 0; i < nameCount; ++i) {
TclDStringAppendLiteral(&buf, "::");
- Tcl_DStringAppend(&buf, nameParts[i], -1);
+ Tcl_DStringAppend(&buf, nameParts[i], TCL_INDEX_NONE);
}
}
@@ -1619,10 +1619,10 @@ TclMakeEnsemble(
TclDStringAppendLiteral(&buf, "::");
TclNewObj(mapDict);
for (i=0 ; map[i].name != NULL ; i++) {
- fromObj = Tcl_NewStringObj(map[i].name, -1);
+ fromObj = Tcl_NewStringObj(map[i].name, TCL_INDEX_NONE);
TclNewStringObj(toObj, Tcl_DStringValue(&buf),
Tcl_DStringLength(&buf));
- Tcl_AppendToObj(toObj, map[i].name, -1);
+ Tcl_AppendToObj(toObj, map[i].name, TCL_INDEX_NONE);
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, -1))) {
+ Tcl_DStringAppend(&hiddenBuf, map[i].name, TCL_INDEX_NONE))) {
Tcl_Panic("%s", Tcl_GetStringResult(interp));
}
} else {
@@ -1737,7 +1737,7 @@ NsEnsembleImplementationCmdNR(
Tcl_DStringInit(&buf);
if (ensemblePtr->parameterList) {
Tcl_DStringAppend(&buf,
- TclGetString(ensemblePtr->parameterList), -1);
+ TclGetString(ensemblePtr->parameterList), TCL_INDEX_NONE);
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", -1));
+ "ensemble activated for deleted namespace", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "ENSEMBLE", "DEAD", NULL);
}
return TCL_ERROR;
@@ -1869,7 +1869,7 @@ NsEnsembleImplementationCmdNR(
* Record the spelling correction for usage message.
*/
- fix = Tcl_NewStringObj(fullName, -1);
+ fix = Tcl_NewStringObj(fullName, TCL_INDEX_NONE);
/*
* Cache for later in the subcommand object.
@@ -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], -1);
+ Tcl_AppendToObj(errorObj, ensemblePtr->subcommandArrayPtr[0], TCL_INDEX_NONE);
} else {
size_t i;
for (i=0 ; i<ensemblePtr->subcommandTable.numEntries-1 ; i++) {
- Tcl_AppendToObj(errorObj, ensemblePtr->subcommandArrayPtr[i], -1);
+ Tcl_AppendToObj(errorObj, ensemblePtr->subcommandArrayPtr[i], TCL_INDEX_NONE);
Tcl_AppendToObj(errorObj, ", ", 2);
}
Tcl_AppendPrintfToObj(errorObj, "or %s",
@@ -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", -1));
+ "unknown subcommand handler deleted its ensemble", TCL_INDEX_NONE));
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: ", -1));
+ "unknown subcommand handler returned bad code: ", TCL_INDEX_NONE));
switch (result) {
case TCL_RETURN:
- Tcl_AppendToObj(Tcl_GetObjResult(interp), "return", -1);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), "return", TCL_INDEX_NONE);
break;
case TCL_BREAK:
- Tcl_AppendToObj(Tcl_GetObjResult(interp), "break", -1);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), "break", TCL_INDEX_NONE);
break;
case TCL_CONTINUE:
- Tcl_AppendToObj(Tcl_GetObjResult(interp), "continue", -1);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), "continue", TCL_INDEX_NONE);
break;
default:
Tcl_AppendPrintfToObj(Tcl_GetObjResult(interp), "%d", result);
@@ -2625,7 +2625,7 @@ BuildEnsembleConfig(
name = TclGetString(subv[i+1]);
hPtr = Tcl_CreateHashEntry(hash, name, &isNew);
if (isNew) {
- cmdObj = Tcl_NewStringObj(name, -1);
+ cmdObj = Tcl_NewStringObj(name, TCL_INDEX_NONE);
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, -1);
+ cmdObj = Tcl_NewStringObj(name, TCL_INDEX_NONE);
cmdPrefixObj = Tcl_NewListObj(1, &cmdObj);
Tcl_SetHashValue(hPtr, cmdPrefixObj);
Tcl_IncrRefCount(cmdPrefixObj);
diff --git a/generic/tclEnv.c b/generic/tclEnv.c
index 630e89c..6dae72a 100644
--- a/generic/tclEnv.c
+++ b/generic/tclEnv.c
@@ -185,8 +185,8 @@ TclSetupEnv(
p1 = "COMSPEC";
}
#endif
- obj1 = Tcl_NewStringObj(p1, -1);
- obj2 = Tcl_NewStringObj(p2, -1);
+ obj1 = Tcl_NewStringObj(p1, TCL_INDEX_NONE);
+ obj2 = Tcl_NewStringObj(p2, TCL_INDEX_NONE);
Tcl_DStringFree(&envString);
Tcl_IncrRefCount(obj1);
@@ -406,7 +406,7 @@ Tcl_PutEnv(
* name and value parts, and call TclSetEnv to do all of the real work.
*/
- name = Tcl_ExternalToUtfDString(NULL, assignment, -1, &nameString);
+ name = Tcl_ExternalToUtfDString(NULL, assignment, TCL_INDEX_NONE, &nameString);
value = (char *)strchr(name, '=');
if ((value != NULL) && (value != name)) {
@@ -582,7 +582,7 @@ TclGetEnv(
if (*result == '=') {
result++;
Tcl_DStringInit(valuePtr);
- Tcl_DStringAppend(valuePtr, result, -1);
+ Tcl_DStringAppend(valuePtr, result, TCL_INDEX_NONE);
result = Tcl_DStringValue(valuePtr);
} else {
result = NULL;
diff --git a/generic/tclEvent.c b/generic/tclEvent.c
index 4a61d60..64935e6 100644
--- a/generic/tclEvent.c
+++ b/generic/tclEvent.c
@@ -281,7 +281,7 @@ HandleBgErrors(
Tcl_DecrRefCount(keyPtr);
Tcl_WriteChars(errChannel,
- "error in background error handler:\n", -1);
+ "error in background error handler:\n", TCL_INDEX_NONE);
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\"", -1));
+ "missing return option \"-level\"", TCL_INDEX_NONE));
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\"", -1));
+ "missing return option \"-code\"", TCL_INDEX_NONE));
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", -1);
+ Tcl_WriteChars(errChannel, "\n", TCL_INDEX_NONE);
} else {
Tcl_DiscardInterpState(saved);
Tcl_WriteChars(errChannel,
- "bgerror failed to handle background error.\n",-1);
- Tcl_WriteChars(errChannel, " Original error: ", -1);
+ "bgerror failed to handle background error.\n", TCL_INDEX_NONE);
+ Tcl_WriteChars(errChannel, " Original error: ", TCL_INDEX_NONE);
Tcl_WriteObj(errChannel, tempObjv[1]);
- Tcl_WriteChars(errChannel, "\n", -1);
- Tcl_WriteChars(errChannel, " Error in bgerror: ", -1);
+ Tcl_WriteChars(errChannel, "\n", TCL_INDEX_NONE);
+ Tcl_WriteChars(errChannel, " Error in bgerror: ", TCL_INDEX_NONE);
Tcl_WriteObj(errChannel, resultPtr);
- Tcl_WriteChars(errChannel, "\n", -1);
+ Tcl_WriteChars(errChannel, "\n", TCL_INDEX_NONE);
}
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", -1));
+ "timeout must be positive", TCL_INDEX_NONE));
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", -1));
+ "can't wait: would block forever", TCL_INDEX_NONE));
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", -1));
+ "timer events disabled with timeout specified", TCL_INDEX_NONE));
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", -1));
+ "file events disabled with channel(s) specified", TCL_INDEX_NONE));
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", -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("limit exceeded", TCL_INDEX_NONE));
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", -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("limit exceeded", TCL_INDEX_NONE));
return TCL_ERROR;
}
}
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index 1e23517..97122b9 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -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", -1));
+ "yield can only be called in a coroutine", TCL_INDEX_NONE));
DECACHE_STACK_INFO();
Tcl_SetErrorCode(interp, "TCL", "COROUTINE", "ILLEGAL_YIELD",
NULL);
@@ -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", -1));
+ "yieldto can only be called in a coroutine", TCL_INDEX_NONE));
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", -1));
+ "yieldto called in deleted namespace", TCL_INDEX_NONE));
DECACHE_STACK_INFO();
Tcl_SetErrorCode(interp, "TCL", "COROUTINE", "YIELDTO_IN_DELETED",
NULL);
@@ -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", -1));
+ "tailcall can only be called from a proc or lambda", TCL_INDEX_NONE));
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, -1);
+ nsObjPtr = Tcl_NewStringObj(iPtr->varFramePtr->nsPtr->fullName, TCL_INDEX_NONE);
TclListObjSetElement(interp, listPtr, 0, nsObjPtr);
if (iPtr->varFramePtr->tailcallPtr) {
Tcl_DecrRefCount(iPtr->varFramePtr->tailcallPtr);
@@ -5039,7 +5039,7 @@ TEBCresume(
case INST_LREPLACE4:
{
- Tcl_Size numToDelete, numNewElems;
+ size_t numToDelete, numNewElems;
int end_indicator;
int haveSecondIndex, flags;
Tcl_Obj *fromIdxObj, *toIdxObj;
@@ -5150,7 +5150,7 @@ TEBCresume(
{
int checkEq = ((*pc == INST_EQ) || (*pc == INST_NEQ)
|| (*pc == INST_STR_EQ) || (*pc == INST_STR_NEQ));
- match = TclStringCmp(valuePtr, value2Ptr, checkEq, 0, -1);
+ match = TclStringCmp(valuePtr, value2Ptr, checkEq, 0, TCL_INDEX_NONE);
}
/*
@@ -5844,7 +5844,7 @@ TEBCresume(
case INST_RSHIFT:
if (w2 < 0) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "negative shift argument", -1));
+ "negative shift argument", TCL_INDEX_NONE));
#ifdef ERROR_CODE_FOR_EARLY_DETECTED_ARITH_ERROR
DECACHE_STACK_INFO();
Tcl_SetErrorCode(interp, "ARITH", "DOMAIN",
@@ -5893,7 +5893,7 @@ TEBCresume(
case INST_LSHIFT:
if (w2 < 0) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "negative shift argument", -1));
+ "negative shift argument", TCL_INDEX_NONE));
#ifdef ERROR_CODE_FOR_EARLY_DETECTED_ARITH_ERROR
DECACHE_STACK_INFO();
Tcl_SetErrorCode(interp, "ARITH", "DOMAIN",
@@ -5916,7 +5916,7 @@ TEBCresume(
*/
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "integer value too large to represent", -1));
+ "integer value too large to represent", TCL_INDEX_NONE));
#ifdef ERROR_CODE_FOR_EARLY_DETECTED_ARITH_ERROR
DECACHE_STACK_INFO();
Tcl_SetErrorCode(interp, "ARITH", "IOVERFLOW",
@@ -7422,14 +7422,14 @@ TEBCresume(
*/
divideByZero:
- Tcl_SetObjResult(interp, Tcl_NewStringObj("divide by zero", -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("divide by zero", TCL_INDEX_NONE));
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", -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("out of memory", TCL_INDEX_NONE));
DECACHE_STACK_INFO();
Tcl_SetErrorCode(interp, "ARITH", "OUTOFMEMORY", "out of memory", NULL);
CACHE_STACK_INFO();
@@ -7442,7 +7442,7 @@ TEBCresume(
exponOfZero:
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "exponentiation of zero by negative power", -1));
+ "exponentiation of zero by negative power", TCL_INDEX_NONE));
DECACHE_STACK_INFO();
Tcl_SetErrorCode(interp, "ARITH", "DOMAIN",
"exponentiation of zero by negative power", NULL);
@@ -8003,7 +8003,7 @@ ExecuteExtendedBinaryMathOp(
}
if (invalid) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "negative shift argument", -1));
+ "negative shift argument", TCL_INDEX_NONE));
return GENERAL_ARITHMETIC_ERROR;
}
@@ -8034,7 +8034,7 @@ ExecuteExtendedBinaryMathOp(
*/
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "integer value too large to represent", -1));
+ "integer value too large to represent", TCL_INDEX_NONE));
return GENERAL_ARITHMETIC_ERROR;
}
shift = (int)(*((const Tcl_WideInt *)ptr2));
@@ -8282,7 +8282,7 @@ ExecuteExtendedBinaryMathOp(
if (type2 != TCL_NUMBER_INT) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "exponent too large", -1));
+ "exponent too large", TCL_INDEX_NONE));
return GENERAL_ARITHMETIC_ERROR;
}
@@ -8362,7 +8362,7 @@ ExecuteExtendedBinaryMathOp(
|| (value2Ptr->typePtr != &tclIntType.objType)
|| (Tcl_WideUInt)w2 >= (1<<28)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "exponent too large", -1));
+ "exponent too large", TCL_INDEX_NONE));
return GENERAL_ARITHMETIC_ERROR;
}
Tcl_TakeBignumFromObj(NULL, valuePtr, &big1);
@@ -9369,16 +9369,16 @@ TclExprFloatError(
if ((errno == EDOM) || isnan(value)) {
s = "domain error: argument not in valid range";
- Tcl_SetObjResult(interp, Tcl_NewStringObj(s, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(s, TCL_INDEX_NONE));
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, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(s, TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "ARITH", "UNDERFLOW", s, NULL);
} else {
s = "floating-point value too large to represent";
- Tcl_SetObjResult(interp, Tcl_NewStringObj(s, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(s, TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "ARITH", "OVERFLOW", s, NULL);
}
} else {
diff --git a/generic/tclFCmd.c b/generic/tclFCmd.c
index 89550d9..c1dbc88 100644
--- a/generic/tclFCmd.c
+++ b/generic/tclFCmd.c
@@ -1042,7 +1042,7 @@ TclFileAttrsCmd(
res = Tcl_FSFileAttrsGet(interp, index, filePtr, &objPtrAttr);
if (res == TCL_OK) {
Tcl_Obj *objPtr =
- Tcl_NewStringObj(attributeStrings[index], -1);
+ Tcl_NewStringObj(attributeStrings[index], TCL_INDEX_NONE);
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), -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(Tcl_GetChannelName(chan), TCL_INDEX_NONE));
return TCL_OK;
}
diff --git a/generic/tclFileName.c b/generic/tclFileName.c
index 168355a..2581d37 100644
--- a/generic/tclFileName.c
+++ b/generic/tclFileName.c
@@ -537,7 +537,7 @@ Tcl_SplitPath(
* Perform the splitting, using objectified, vfs-aware code.
*/
- tmpPtr = Tcl_NewStringObj(path, -1);
+ tmpPtr = Tcl_NewStringObj(path, TCL_INDEX_NONE);
Tcl_IncrRefCount(tmpPtr);
resultPtr = Tcl_FSSplitPath(tmpPtr, argcPtr);
Tcl_IncrRefCount(resultPtr);
@@ -943,7 +943,7 @@ Tcl_JoinPath(
TclNewObj(listObj);
for (i = 0; i < argc; i++) {
Tcl_ListObjAppendElement(NULL, listObj,
- Tcl_NewStringObj(argv[i], -1));
+ Tcl_NewStringObj(argv[i], TCL_INDEX_NONE));
}
/*
@@ -1003,7 +1003,7 @@ Tcl_TranslateFileName(
Tcl_DString *bufferPtr) /* Uninitialized or free DString filled with
* name. */
{
- Tcl_Obj *path = Tcl_NewStringObj(name, -1);
+ Tcl_Obj *path = Tcl_NewStringObj(name, TCL_INDEX_NONE);
Tcl_Obj *transPtr;
Tcl_IncrRefCount(path);
@@ -1171,7 +1171,7 @@ Tcl_GlobObjCmd(
case GLOB_DIR: /* -dir */
if (i == (objc-1)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "missing argument to \"-directory\"", -1));
+ "missing argument to \"-directory\"", TCL_INDEX_NONE));
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\"", -1));
+ "missing argument to \"-path\"", TCL_INDEX_NONE));
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\"", -1));
+ "missing argument to \"-types\"", TCL_INDEX_NONE));
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\"", -1));
+ "\"-directory\" or \"-path\"", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "GLOB",
"BADOPTIONCOMBINATION", NULL);
return TCL_ERROR;
@@ -1291,7 +1291,7 @@ Tcl_GlobObjCmd(
* in TclGlob requires a non-NULL pathOrDir.
*/
- Tcl_DStringAppend(&pref, first, -1);
+ Tcl_DStringAppend(&pref, first, TCL_INDEX_NONE);
globFlags &= ~TCL_GLOBMODE_TAILS;
pathOrDir = NULL;
} else {
@@ -1330,7 +1330,7 @@ Tcl_GlobObjCmd(
}
}
if (*search != '\0') {
- Tcl_DStringAppend(&prefix, search, -1);
+ Tcl_DStringAppend(&prefix, search, TCL_INDEX_NONE);
}
Tcl_DStringFree(&pref);
}
@@ -1460,7 +1460,7 @@ Tcl_GlobObjCmd(
badMacTypesArg:
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"only one MacOS type or creator argument"
- " to \"-types\" allowed", -1));
+ " to \"-types\" allowed", TCL_INDEX_NONE));
result = TCL_ERROR;
Tcl_SetErrorCode(interp, "TCL", "ARGUMENT", "BAD", NULL);
join = 0;
@@ -1642,7 +1642,7 @@ TclGlob(
|| (tail[0] == '\\' && tail[1] == '\\'))) {
size_t driveNameLen;
Tcl_Obj *driveName;
- Tcl_Obj *temp = Tcl_NewStringObj(tail, -1);
+ Tcl_Obj *temp = Tcl_NewStringObj(tail, TCL_INDEX_NONE);
Tcl_IncrRefCount(temp);
switch (TclGetPathType(temp, NULL, &driveNameLen, &driveName)) {
@@ -2033,14 +2033,14 @@ DoGlob(
break;
}
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "unmatched open-brace in file name", -1));
+ "unmatched open-brace in file name", TCL_INDEX_NONE));
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", -1));
+ "unmatched close-brace in file name", TCL_INDEX_NONE));
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, -1);
+ Tcl_DStringAppend(&newName, closeBrace+1, TCL_INDEX_NONE);
result = DoGlob(interp, matchesObj, separators, pathPtr, flags,
Tcl_DStringValue(&newName), types);
if (result != TCL_OK) {
diff --git a/generic/tclHistory.c b/generic/tclHistory.c
index dc5a67d..8083b4d 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, -1);
+ cmdPtr = Tcl_NewStringObj(cmd, TCL_INDEX_NONE);
Tcl_IncrRefCount(cmdPtr);
result = Tcl_RecordAndEvalObj(interp, cmdPtr, flags);
diff --git a/generic/tclIO.c b/generic/tclIO.c
index dc0ce7d..dd05ee3 100644
--- a/generic/tclIO.c
+++ b/generic/tclIO.c
@@ -191,9 +191,9 @@ static int DetachChannel(Tcl_Interp *interp, Tcl_Channel chan);
static void DiscardInputQueued(ChannelState *statePtr,
int discardSavedBuffers);
static void DiscardOutputQueued(ChannelState *chanPtr);
-static int DoRead(Channel *chanPtr, char *dst, Tcl_Size bytesToRead,
+static Tcl_Size DoRead(Channel *chanPtr, char *dst, Tcl_Size bytesToRead,
int allowShortReads);
-static int DoReadChars(Channel *chan, Tcl_Obj *objPtr, Tcl_Size toRead,
+static Tcl_Size DoReadChars(Channel *chan, Tcl_Obj *objPtr, Tcl_Size toRead,
int appendFlag);
static int FilterInputBytes(Channel *chanPtr,
GetsState *statePtr);
@@ -5905,11 +5905,11 @@ Tcl_ReadChars(
*---------------------------------------------------------------------------
*/
-static int
+static Tcl_Size
DoReadChars(
Channel *chanPtr, /* The channel to read. */
Tcl_Obj *objPtr, /* Input data is stored in this object. */
- Tcl_Size toRead, /* Maximum number of characters to store, or
+ Tcl_Size toRead, /* Maximum number of characters to store, or
* TCL_INDEX_NONE to read all available data (up to EOF or
* when channel blocks). */
int appendFlag) /* If non-zero, data read from the channel
@@ -5920,7 +5920,8 @@ DoReadChars(
ChannelState *statePtr = chanPtr->state;
/* State info for channel */
ChannelBuffer *bufPtr;
- int copied, copiedNow, result;
+ Tcl_Size copied;
+ int result;
Tcl_Encoding encoding = statePtr->encoding;
int binaryMode;
#define UTF_EXPANSION_FACTOR 1024
@@ -6005,8 +6006,8 @@ DoReadChars(
}
ResetFlag(statePtr, CHANNEL_BLOCKED|CHANNEL_EOF);
statePtr->inputEncodingFlags &= ~TCL_ENCODING_END;
- for (copied = 0; toRead > 0; ) {
- copiedNow = -1;
+ for (copied = 0; toRead > 0 || toRead == TCL_INDEX_NONE; ) {
+ int copiedNow = -1;
if (statePtr->inQueueHead != NULL) {
if (binaryMode) {
copiedNow = ReadBytes(statePtr, objPtr, toRead);
@@ -6052,7 +6053,9 @@ DoReadChars(
}
} else {
copied += copiedNow;
- toRead -= copiedNow;
+ if (toRead != TCL_INDEX_NONE) {
+ toRead -= copiedNow; /* Only decr if not reading whole file */
+ }
}
}
@@ -6228,7 +6231,7 @@ ReadChars(
size_t size;
dst = TclGetStringStorage(objPtr, &size) + numBytes;
- dstLimit = size - numBytes;
+ dstLimit = (size - numBytes) > INT_MAX ? INT_MAX : (size - numBytes);
} else {
dst = TclGetString(objPtr) + numBytes;
}
@@ -9604,9 +9607,10 @@ CopyData(
Tcl_Obj *cmdPtr, *errObj = NULL, *bufObj = NULL, *msg = NULL;
Tcl_Channel inChan, outChan;
ChannelState *inStatePtr, *outStatePtr;
- int result = TCL_OK, size;
+ int result = TCL_OK;
Tcl_Size sizeb;
Tcl_WideInt total;
+ Tcl_WideInt size; /* TODO - be careful if total and size are made unsigned */
const char *buffer;
int inBinary, outBinary, sameEncoding;
/* Encoding control */
@@ -9944,7 +9948,7 @@ CopyData(
*----------------------------------------------------------------------
*/
-static int
+static Tcl_Size
DoRead(
Channel *chanPtr, /* The channel from which to read. */
char *dst, /* Where to store input read. */
diff --git a/generic/tclIOCmd.c b/generic/tclIOCmd.c
index 197ca32..2298d48 100644
--- a/generic/tclIOCmd.c
+++ b/generic/tclIOCmd.c
@@ -1080,7 +1080,7 @@ Tcl_OpenObjCmd(
if (objc == 4) {
const char *permString = TclGetString(objv[3]);
int code = TCL_ERROR;
- int scanned = TclParseAllWhiteSpace(permString, -1);
+ int scanned = TclParseAllWhiteSpace(permString, TCL_INDEX_NONE);
/*
* Support legacy octal numbers.
diff --git a/generic/tclIOGT.c b/generic/tclIOGT.c
index 868791a..532adbd 100644
--- a/generic/tclIOGT.c
+++ b/generic/tclIOGT.c
@@ -19,25 +19,25 @@
* the transformation.
*/
-static int TransformBlockModeProc(ClientData instanceData,
+static int TransformBlockModeProc(void *instanceData,
int mode);
-static int TransformCloseProc(ClientData instanceData,
+static int TransformCloseProc(void *instanceData,
Tcl_Interp *interp, int flags);
-static int TransformInputProc(ClientData instanceData, char *buf,
+static int TransformInputProc(void *instanceData, char *buf,
int toRead, int *errorCodePtr);
-static int TransformOutputProc(ClientData instanceData,
+static int TransformOutputProc(void *instanceData,
const char *buf, int toWrite, int *errorCodePtr);
-static int TransformSetOptionProc(ClientData instanceData,
+static int TransformSetOptionProc(void *instanceData,
Tcl_Interp *interp, const char *optionName,
const char *value);
-static int TransformGetOptionProc(ClientData instanceData,
+static int TransformGetOptionProc(void *instanceData,
Tcl_Interp *interp, const char *optionName,
Tcl_DString *dsPtr);
-static void TransformWatchProc(ClientData instanceData, int mask);
-static int TransformGetFileHandleProc(ClientData instanceData,
- int direction, ClientData *handlePtr);
-static int TransformNotifyProc(ClientData instanceData, int mask);
-static long long TransformWideSeekProc(ClientData instanceData,
+static void TransformWatchProc(void *instanceData, int mask);
+static int TransformGetFileHandleProc(void *instanceData,
+ int direction, void **handlePtr);
+static int TransformNotifyProc(void *instanceData, int mask);
+static long long TransformWideSeekProc(void *instanceData,
long long offset, int mode, int *errorCodePtr);
/*
@@ -45,7 +45,7 @@ static long long TransformWideSeekProc(ClientData instanceData,
* handling and generating fileeevents.
*/
-static void TransformChannelHandlerTimer(ClientData clientData);
+static void TransformChannelHandlerTimer(void *clientData);
/*
* Forward declarations of internal procedures. Third, helper procedures
@@ -268,7 +268,7 @@ TclChannelTransform(
if (TCL_OK != TclListObjLengthM(interp, cmdObjPtr, &objc)) {
Tcl_SetObjResult(interp,
- Tcl_NewStringObj("-command value is not a list", -1));
+ Tcl_NewStringObj("-command value is not a list", TCL_INDEX_NONE));
return TCL_ERROR;
}
@@ -397,7 +397,7 @@ ExecuteCallback(
}
Tcl_IncrRefCount(command);
- Tcl_ListObjAppendElement(NULL, command, Tcl_NewStringObj((char *) op, -1));
+ Tcl_ListObjAppendElement(NULL, command, Tcl_NewStringObj((char *) op, TCL_INDEX_NONE));
/*
* Use a byte-array to prevent the misinterpretation of binary data coming
@@ -510,7 +510,7 @@ ExecuteCallback(
static int
TransformBlockModeProc(
- ClientData instanceData, /* State of transformation. */
+ void *instanceData, /* State of transformation. */
int mode) /* New blocking mode. */
{
TransformChannelData *dataPtr = (TransformChannelData *)instanceData;
@@ -542,7 +542,7 @@ TransformBlockModeProc(
static int
TransformCloseProc(
- ClientData instanceData,
+ void *instanceData,
Tcl_Interp *interp,
int flags)
{
@@ -626,7 +626,7 @@ TransformCloseProc(
static int
TransformInputProc(
- ClientData instanceData,
+ void *instanceData,
char *buf,
int toRead,
int *errorCodePtr)
@@ -793,7 +793,7 @@ TransformInputProc(
static int
TransformOutputProc(
- ClientData instanceData,
+ void *instanceData,
const char *buf,
int toWrite,
int *errorCodePtr)
@@ -845,7 +845,7 @@ TransformOutputProc(
static long long
TransformWideSeekProc(
- ClientData instanceData, /* The channel to manipulate. */
+ void *instanceData, /* The channel to manipulate. */
long long offset, /* Size of movement. */
int mode, /* How to move. */
int *errorCodePtr) /* Location of error flag. */
@@ -923,7 +923,7 @@ TransformWideSeekProc(
static int
TransformSetOptionProc(
- ClientData instanceData,
+ void *instanceData,
Tcl_Interp *interp,
const char *optionName,
const char *value)
@@ -961,7 +961,7 @@ TransformSetOptionProc(
static int
TransformGetOptionProc(
- ClientData instanceData,
+ void *instanceData,
Tcl_Interp *interp,
const char *optionName,
Tcl_DString *dsPtr)
@@ -1008,7 +1008,7 @@ TransformGetOptionProc(
static void
TransformWatchProc(
- ClientData instanceData, /* Channel to watch. */
+ void *instanceData, /* Channel to watch. */
int mask) /* Events of interest. */
{
TransformChannelData *dataPtr = (TransformChannelData *)instanceData;
@@ -1086,9 +1086,9 @@ TransformWatchProc(
static int
TransformGetFileHandleProc(
- ClientData instanceData, /* Channel to query. */
+ void *instanceData, /* Channel to query. */
int direction, /* Direction of interest. */
- ClientData *handlePtr) /* Place to store the handle into. */
+ void **handlePtr) /* Place to store the handle into. */
{
TransformChannelData *dataPtr = (TransformChannelData *)instanceData;
@@ -1120,7 +1120,7 @@ TransformGetFileHandleProc(
static int
TransformNotifyProc(
- ClientData clientData, /* The state of the notified
+ void *clientData, /* The state of the notified
* transformation. */
int mask) /* The mask of occuring events. */
{
@@ -1165,7 +1165,7 @@ TransformNotifyProc(
static void
TransformChannelHandlerTimer(
- ClientData clientData) /* Transformation to query. */
+ void *clientData) /* Transformation to query. */
{
TransformChannelData *dataPtr = (TransformChannelData *)clientData;
diff --git a/generic/tclIOSock.c b/generic/tclIOSock.c
index f14c5c1..a925c3d 100644
--- a/generic/tclIOSock.c
+++ b/generic/tclIOSock.c
@@ -317,7 +317,7 @@ Tcl_OpenTcpServer(
int port,
const char *host,
Tcl_TcpAcceptProc *acceptProc,
- ClientData callbackData)
+ void *callbackData)
{
char portbuf[TCL_INTEGER_SPACE];
diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c
index 470977e..436d364 100644
--- a/generic/tclIOUtil.c
+++ b/generic/tclIOUtil.c
@@ -1756,7 +1756,7 @@ Tcl_FSEvalFileEx(
* Otherwise, replace them. [Bug 3466099]
*/
- if (Tcl_ReadChars(chan, objPtr, -1,
+ if (Tcl_ReadChars(chan, objPtr, TCL_INDEX_NONE,
memcmp(string, "\xEF\xBB\xBF", 3)) == TCL_IO_FAILURE) {
Tcl_CloseEx(interp, chan, 0);
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
@@ -1893,7 +1893,7 @@ TclNREvalFile(
* Otherwise, replace them. [Bug 3466099]
*/
- if (Tcl_ReadChars(chan, objPtr, -1,
+ if (Tcl_ReadChars(chan, objPtr, TCL_INDEX_NONE,
memcmp(string, "\xEF\xBB\xBF", 3)) == TCL_IO_FAILURE) {
Tcl_CloseEx(interp, chan, 0);
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
@@ -2459,7 +2459,7 @@ TclFSFileAttrIndex(
* It's a constant attribute table, so use T_GIFO.
*/
- Tcl_Obj *tmpObj = Tcl_NewStringObj(attributeName, -1);
+ Tcl_Obj *tmpObj = Tcl_NewStringObj(attributeName, TCL_INDEX_NONE);
int result;
result = Tcl_GetIndexFromObj(NULL, tmpObj, attrTable, NULL, TCL_EXACT,
@@ -3292,7 +3292,7 @@ Tcl_LoadFile(
Tcl_DecrRefCount(copyToPtr);
if (interp) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "couldn't load from current filesystem", -1));
+ "couldn't load from current filesystem", TCL_INDEX_NONE));
}
return TCL_ERROR;
}
@@ -4612,7 +4612,7 @@ Tcl_FSFileSystemInfo(
resPtr = Tcl_NewListObj(0, NULL);
Tcl_ListObjAppendElement(NULL, resPtr,
- Tcl_NewStringObj(fsPtr->typeName, -1));
+ Tcl_NewStringObj(fsPtr->typeName, TCL_INDEX_NONE));
if (fsPtr->filesystemPathTypeProc != NULL) {
Tcl_Obj *typePtr = fsPtr->filesystemPathTypeProc(pathPtr);
diff --git a/generic/tclIndexObj.c b/generic/tclIndexObj.c
index 58bcc04..66d7f30 100644
--- a/generic/tclIndexObj.c
+++ b/generic/tclIndexObj.c
@@ -533,7 +533,7 @@ PrefixMatchObjCmd(
case PRFMATCH_MESSAGE:
if (i > objc-4) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "missing value for -message", -1));
+ "missing value for -message", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "NOARG", NULL);
return TCL_ERROR;
}
@@ -543,7 +543,7 @@ PrefixMatchObjCmd(
case PRFMATCH_ERROR:
if (i > objc-4) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "missing value for -error", -1));
+ "missing value for -error", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "NOARG", NULL);
return TCL_ERROR;
}
@@ -819,9 +819,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 \"", -1);
+ Tcl_AppendToObj(objPtr, " or \"", TCL_INDEX_NONE);
} else {
- Tcl_AppendToObj(objPtr, "wrong # args: should be \"", -1);
+ Tcl_AppendToObj(objPtr, "wrong # args: should be \"", TCL_INDEX_NONE);
}
/*
@@ -1289,7 +1289,7 @@ PrintUsage(
* Now add the option information, with pretty-printing.
*/
- msg = Tcl_NewStringObj("Command-specific options:", -1);
+ msg = Tcl_NewStringObj("Command-specific options:", TCL_INDEX_NONE);
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 +1305,7 @@ PrintUsage(
}
numSpaces -= NUM_SPACES;
}
- Tcl_AppendToObj(msg, infoPtr->helpStr, -1);
+ Tcl_AppendToObj(msg, infoPtr->helpStr, TCL_INDEX_NONE);
switch (infoPtr->type) {
case TCL_ARGV_INT:
Tcl_AppendPrintfToObj(msg, "\n\t\tDefault value: %d",
diff --git a/generic/tclInterp.c b/generic/tclInterp.c
index 416f74e..ecc6e15 100644
--- a/generic/tclInterp.c
+++ b/generic/tclInterp.c
@@ -186,7 +186,7 @@ struct LimitHandler {
int flags; /* The state of this particular handler. */
Tcl_LimitHandlerProc *handlerProc;
/* The handler callback. */
- ClientData clientData; /* Opaque argument to the handler callback. */
+ void *clientData; /* Opaque argument to the handler callback. */
Tcl_LimitHandlerDeleteProc *deleteProc;
/* How to delete the clientData. */
LimitHandler *prevPtr; /* Previous item in linked list of
@@ -265,12 +265,12 @@ static void InheritLimitsFromParent(Tcl_Interp *childInterp,
Tcl_Interp *parentInterp);
static void SetScriptLimitCallback(Tcl_Interp *interp, int type,
Tcl_Interp *targetInterp, Tcl_Obj *scriptObj);
-static void CallScriptLimitCallback(ClientData clientData,
+static void CallScriptLimitCallback(void *clientData,
Tcl_Interp *interp);
-static void DeleteScriptLimitCallback(ClientData clientData);
+static void DeleteScriptLimitCallback(void *clientData);
static void RunLimitHandlers(LimitHandler *handlerPtr,
Tcl_Interp *interp);
-static void TimeLimitCallback(ClientData clientData);
+static void TimeLimitCallback(void *clientData);
/* NRE enabling */
static Tcl_NRPostProc NRPostInvokeHidden;
@@ -339,7 +339,7 @@ Tcl_Init(
pkgName.nextPtr = *names;
*names = &pkgName;
if (tclPreInitScript != NULL) {
- if (Tcl_EvalEx(interp, tclPreInitScript, -1, 0) == TCL_ERROR) {
+ if (Tcl_EvalEx(interp, tclPreInitScript, TCL_INDEX_NONE, 0) == TCL_ERROR) {
goto end;
}
}
@@ -449,7 +449,7 @@ Tcl_Init(
" error $msg\n"
" }\n"
"}\n"
-"tclInit", -1, 0);
+"tclInit", TCL_INDEX_NONE, 0);
end:
*names = (*names)->nextPtr;
@@ -601,7 +601,7 @@ InterpInfoDeleteProc(
int
Tcl_InterpObjCmd(
- ClientData clientData,
+ void *clientData,
Tcl_Interp *interp, /* Current interpreter. */
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
@@ -837,7 +837,7 @@ NRInterpCmd(
break;
}
}
- childPtr = Tcl_NewStringObj(buf, -1);
+ childPtr = Tcl_NewStringObj(buf, TCL_INDEX_NONE);
}
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", -1));
+ "cannot delete the current interpreter", TCL_INDEX_NONE));
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, -1));
+ Tcl_NewStringObj(string, TCL_INDEX_NONE));
}
Tcl_SetObjResult(interp, resultPtr);
return TCL_OK;
@@ -1207,14 +1207,14 @@ Tcl_CreateAlias(
objv = (Tcl_Obj **)TclStackAlloc(childInterp, sizeof(Tcl_Obj *) * argc);
for (i = 0; i < argc; i++) {
- objv[i] = Tcl_NewStringObj(argv[i], -1);
+ objv[i] = Tcl_NewStringObj(argv[i], TCL_INDEX_NONE);
Tcl_IncrRefCount(objv[i]);
}
- childObjPtr = Tcl_NewStringObj(childCmd, -1);
+ childObjPtr = Tcl_NewStringObj(childCmd, TCL_INDEX_NONE);
Tcl_IncrRefCount(childObjPtr);
- targetObjPtr = Tcl_NewStringObj(targetCmd, -1);
+ targetObjPtr = Tcl_NewStringObj(targetCmd, TCL_INDEX_NONE);
Tcl_IncrRefCount(targetObjPtr);
result = AliasCreate(childInterp, childInterp, targetInterp, childObjPtr,
@@ -1258,10 +1258,10 @@ Tcl_CreateAliasObj(
Tcl_Obj *childObjPtr, *targetObjPtr;
int result;
- childObjPtr = Tcl_NewStringObj(childCmd, -1);
+ childObjPtr = Tcl_NewStringObj(childCmd, TCL_INDEX_NONE);
Tcl_IncrRefCount(childObjPtr);
- targetObjPtr = Tcl_NewStringObj(targetCmd, -1);
+ targetObjPtr = Tcl_NewStringObj(targetCmd, TCL_INDEX_NONE);
Tcl_IncrRefCount(targetObjPtr);
result = AliasCreate(childInterp, childInterp, targetInterp, childObjPtr,
@@ -1820,7 +1820,7 @@ AliasList(
static int
AliasNRCmd(
- ClientData clientData, /* Alias record. */
+ void *clientData, /* Alias record. */
Tcl_Interp *interp, /* Current interpreter. */
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument vector. */
@@ -1873,7 +1873,7 @@ AliasNRCmd(
int
TclAliasObjCmd(
- ClientData clientData, /* Alias record. */
+ void *clientData, /* Alias record. */
Tcl_Interp *interp, /* Current interpreter. */
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument vector. */
@@ -1964,7 +1964,7 @@ TclAliasObjCmd(
int
TclLocalAliasObjCmd(
- ClientData clientData, /* Alias record. */
+ void *clientData, /* Alias record. */
Tcl_Interp *interp, /* Current interpreter. */
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument vector. */
@@ -2049,7 +2049,7 @@ TclLocalAliasObjCmd(
static void
AliasObjCmdDeleteProc(
- ClientData clientData) /* The alias record for this alias. */
+ void *clientData) /* The alias record for this alias. */
{
Alias *aliasPtr = (Alias *)clientData;
Target *targetPtr;
@@ -2116,7 +2116,7 @@ Tcl_CreateChild(
Tcl_Obj *pathPtr;
Tcl_Interp *childInterp;
- pathPtr = Tcl_NewStringObj(childPath, -1);
+ pathPtr = Tcl_NewStringObj(childPath, TCL_INDEX_NONE);
childInterp = ChildCreate(interp, pathPtr, isSafe);
Tcl_DecrRefCount(pathPtr);
@@ -2147,7 +2147,7 @@ Tcl_GetChild(
Tcl_Obj *pathPtr;
Tcl_Interp *childInterp;
- pathPtr = Tcl_NewStringObj(childPath, -1);
+ pathPtr = Tcl_NewStringObj(childPath, TCL_INDEX_NONE);
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), -1));
+ iiPtr->child.childEntryPtr), TCL_INDEX_NONE));
return TCL_OK;
}
@@ -2386,7 +2386,7 @@ ChildBgerror(
if (TCL_ERROR == TclListObjLengthM(NULL, objv[0], &length)
|| (length < 1)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "cmdPrefix must be list of length >= 1", -1));
+ "cmdPrefix must be list of length >= 1", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "INTERP",
"BGERRORFORMAT", NULL);
return TCL_ERROR;
@@ -2552,7 +2552,7 @@ ChildCreate(
int
TclChildObjCmd(
- ClientData clientData, /* Child interpreter. */
+ void *clientData, /* Child interpreter. */
Tcl_Interp *interp, /* Current interpreter. */
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
@@ -2562,7 +2562,7 @@ TclChildObjCmd(
static int
NRChildCmd(
- ClientData clientData, /* Child interpreter. */
+ void *clientData, /* Child interpreter. */
Tcl_Interp *interp, /* Current interpreter. */
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
@@ -2766,7 +2766,7 @@ NRChildCmd(
static void
ChildObjCmdDeleteProc(
- ClientData clientData) /* The ChildRecord for the command. */
+ void *clientData) /* The ChildRecord for the command. */
{
Child *childPtr; /* Interim storage for Child record. */
Tcl_Interp *childInterp = (Tcl_Interp *)clientData;
@@ -2831,7 +2831,7 @@ ChildDebugCmd(
if (objc == 0) {
TclNewObj(resultPtr);
Tcl_ListObjAppendElement(NULL, resultPtr,
- Tcl_NewStringObj("-frame", -1));
+ Tcl_NewStringObj("-frame", TCL_INDEX_NONE));
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", -1));
+ "safe interpreters cannot change recursion limit", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "INTERP", "UNSAFE",
NULL);
return TCL_ERROR;
@@ -3020,7 +3020,7 @@ ChildRecursionLimit(
iPtr = (Interp *) childInterp;
if (interp == childInterp && iPtr->numLevels > (size_t)limit) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "falling back due to new recursion limit", -1));
+ "falling back due to new recursion limit", TCL_INDEX_NONE));
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), -1));
+ Tcl_NewStringObj((const char *)Tcl_GetHashKey(hTblPtr, hPtr), TCL_INDEX_NONE));
}
}
Tcl_SetObjResult(interp, listObjPtr);
@@ -3183,7 +3183,7 @@ ChildInvokeHidden(
static int
NRPostInvokeHidden(
- ClientData data[],
+ void *data[],
Tcl_Interp *interp,
int result)
{
@@ -3299,7 +3299,7 @@ TclMakeSafe(
*/
(void) Tcl_EvalEx(interp,
- "namespace eval ::tcl {namespace eval mathfunc {}}", -1, 0);
+ "namespace eval ::tcl {namespace eval mathfunc {}}", TCL_INDEX_NONE, 0);
}
iPtr->flags |= SAFE_INTERP;
@@ -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", -1));
+ "command count limit exceeded", TCL_INDEX_NONE));
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", -1));
+ "time limit exceeded", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "LIMIT", "TIME", NULL);
Tcl_Release(interp);
return TCL_ERROR;
@@ -3608,7 +3608,7 @@ Tcl_LimitAddHandler(
Tcl_Interp *interp,
int type,
Tcl_LimitHandlerProc *handlerProc,
- ClientData clientData,
+ void *clientData,
Tcl_LimitHandlerDeleteProc *deleteProc)
{
Interp *iPtr = (Interp *) interp;
@@ -3682,7 +3682,7 @@ Tcl_LimitRemoveHandler(
Tcl_Interp *interp,
int type,
Tcl_LimitHandlerProc *handlerProc,
- ClientData clientData)
+ void *clientData)
{
Interp *iPtr = (Interp *) interp;
LimitHandler *handlerPtr;
@@ -4081,7 +4081,7 @@ Tcl_LimitSetTime(
static void
TimeLimitCallback(
- ClientData clientData)
+ void *clientData)
{
Tcl_Interp *interp = (Tcl_Interp *)clientData;
Interp *iPtr = (Interp *)clientData;
@@ -4225,7 +4225,7 @@ Tcl_LimitGetGranularity(
static void
DeleteScriptLimitCallback(
- ClientData clientData)
+ void *clientData)
{
ScriptLimitCallback *limitCBPtr = (ScriptLimitCallback *)clientData;
@@ -4256,7 +4256,7 @@ DeleteScriptLimitCallback(
static void
CallScriptLimitCallback(
- ClientData clientData,
+ void *clientData,
TCL_UNUSED(Tcl_Interp *))
{
ScriptLimitCallback *limitCBPtr = (ScriptLimitCallback *)clientData;
@@ -4508,7 +4508,7 @@ ChildCommandLimitCmd(
if (interp == childInterp) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "limits on current interpreter inaccessible", -1));
+ "limits on current interpreter inaccessible", TCL_INDEX_NONE));
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], -1),
+ Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[0], TCL_INDEX_NONE),
limitCBPtr->scriptObj);
} else {
goto putEmptyCommandInDict;
@@ -4534,21 +4534,21 @@ ChildCommandLimitCmd(
putEmptyCommandInDict:
TclNewObj(empty);
Tcl_DictObjPut(NULL, dictPtr,
- Tcl_NewStringObj(options[0], -1), empty);
+ Tcl_NewStringObj(options[0], TCL_INDEX_NONE), empty);
}
- Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[1], -1),
+ Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[1], TCL_INDEX_NONE),
Tcl_NewWideIntObj(Tcl_LimitGetGranularity(childInterp,
TCL_LIMIT_COMMANDS)));
if (Tcl_LimitTypeEnabled(childInterp, TCL_LIMIT_COMMANDS)) {
- Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[2], -1),
+ Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[2], TCL_INDEX_NONE),
Tcl_NewWideIntObj(Tcl_LimitGetCommands(childInterp)));
} else {
Tcl_Obj *empty;
TclNewObj(empty);
Tcl_DictObjPut(NULL, dictPtr,
- Tcl_NewStringObj(options[2], -1), empty);
+ Tcl_NewStringObj(options[2], TCL_INDEX_NONE), empty);
}
Tcl_SetObjResult(interp, dictPtr);
return TCL_OK;
@@ -4607,7 +4607,7 @@ ChildCommandLimitCmd(
}
if (gran < 1) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "granularity must be at least 1", -1));
+ "granularity must be at least 1", TCL_INDEX_NONE));
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", -1));
+ "command limit value must be at least 0", TCL_INDEX_NONE));
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", -1));
+ "limits on current interpreter inaccessible", TCL_INDEX_NONE));
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], -1),
+ Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[0], TCL_INDEX_NONE),
limitCBPtr->scriptObj);
} else {
goto putEmptyCommandInDict;
@@ -4721,9 +4721,9 @@ ChildTimeLimitCmd(
putEmptyCommandInDict:
TclNewObj(empty);
Tcl_DictObjPut(NULL, dictPtr,
- Tcl_NewStringObj(options[0], -1), empty);
+ Tcl_NewStringObj(options[0], TCL_INDEX_NONE), empty);
}
- Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[1], -1),
+ Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[1], TCL_INDEX_NONE),
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], -1),
+ Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[2], TCL_INDEX_NONE),
Tcl_NewWideIntObj(limitMoment.usec/1000));
- Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[3], -1),
+ Tcl_DictObjPut(NULL, dictPtr, Tcl_NewStringObj(options[3], TCL_INDEX_NONE),
Tcl_NewWideIntObj(limitMoment.sec));
} else {
Tcl_Obj *empty;
TclNewObj(empty);
Tcl_DictObjPut(NULL, dictPtr,
- Tcl_NewStringObj(options[2], -1), empty);
+ Tcl_NewStringObj(options[2], TCL_INDEX_NONE), empty);
Tcl_DictObjPut(NULL, dictPtr,
- Tcl_NewStringObj(options[3], -1), empty);
+ Tcl_NewStringObj(options[3], TCL_INDEX_NONE), empty);
}
Tcl_SetObjResult(interp, dictPtr);
return TCL_OK;
@@ -4816,7 +4816,7 @@ ChildTimeLimitCmd(
}
if (gran < 1) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "granularity must be at least 1", -1));
+ "granularity must be at least 1", TCL_INDEX_NONE));
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", -1));
+ "also being reset", TCL_INDEX_NONE));
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", -1));
+ "also being reset", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "INTERP",
"BADUSAGE", NULL);
return TCL_ERROR;
diff --git a/generic/tclLink.c b/generic/tclLink.c
index 37c104b..eec778a 100644
--- a/generic/tclLink.c
+++ b/generic/tclLink.c
@@ -175,7 +175,7 @@ Tcl_LinkVar(
linkPtr = (Link *)Tcl_Alloc(sizeof(Link));
linkPtr->interp = interp;
linkPtr->nsPtr = NULL;
- linkPtr->varName = Tcl_NewStringObj(varName, -1);
+ linkPtr->varName = Tcl_NewStringObj(varName, TCL_INDEX_NONE);
Tcl_IncrRefCount(linkPtr->varName);
linkPtr->addr = addr;
linkPtr->type = type & ~TCL_LINK_READ_ONLY;
@@ -256,7 +256,7 @@ Tcl_LinkArray(
if (size < 1) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "wrong array size given", -1));
+ "wrong array size given", TCL_INDEX_NONE));
return TCL_ERROR;
}
@@ -340,7 +340,7 @@ Tcl_LinkArray(
default:
LinkFree(linkPtr);
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "bad linked array variable type", -1));
+ "bad linked array variable type", TCL_INDEX_NONE));
return TCL_ERROR;
}
@@ -380,7 +380,7 @@ Tcl_LinkArray(
*/
linkPtr->interp = interp;
- linkPtr->varName = Tcl_NewStringObj(varName, -1);
+ linkPtr->varName = Tcl_NewStringObj(varName, TCL_INDEX_NONE);
Tcl_IncrRefCount(linkPtr->varName);
TclGetNamespaceForQualName(interp, varName, NULL, TCL_GLOBAL_ONLY,
@@ -1433,7 +1433,7 @@ ObjValue(
TclNewLiteralStringObj(resultObj, "NULL");
return resultObj;
}
- return Tcl_NewStringObj(p, -1);
+ return Tcl_NewStringObj(p, TCL_INDEX_NONE);
case TCL_LINK_CHARS:
if (linkPtr->flags & LINK_ALLOC_LAST) {
diff --git a/generic/tclListObj.c b/generic/tclListObj.c
index 9102af0..7cf96cb 100644
--- a/generic/tclListObj.c
+++ b/generic/tclListObj.c
@@ -526,7 +526,7 @@ ListLimitExceededError(Tcl_Interp *interp)
if (interp != NULL) {
Tcl_SetObjResult(
interp,
- Tcl_NewStringObj("max length of a Tcl list exceeded", -1));
+ Tcl_NewStringObj("max length of a Tcl list exceeded", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "MEMORY", NULL);
}
return TCL_ERROR;
diff --git a/generic/tclLiteral.c b/generic/tclLiteral.c
index dfb92cb..24e99fc 100644
--- a/generic/tclLiteral.c
+++ b/generic/tclLiteral.c
@@ -1057,7 +1057,7 @@ TclInvalidateCmdLiteral(
{
Interp *iPtr = (Interp *) interp;
Tcl_Obj *literalObjPtr = TclCreateLiteral(iPtr, name,
- strlen(name), -1, NULL, nsPtr, 0, NULL);
+ strlen(name), TCL_INDEX_NONE, NULL, nsPtr, 0, NULL);
if (literalObjPtr != NULL) {
if (TclHasInternalRep(literalObjPtr, &tclCmdNameType)) {
diff --git a/generic/tclLoad.c b/generic/tclLoad.c
index fa0b584..b66122d 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", -1));
+ "must specify either file name or prefix", TCL_INDEX_NONE));
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, -1);
+ Tcl_DStringAppend(&pfx, prefix, TCL_INDEX_NONE);
TclDStringClear(&tmp);
- Tcl_DStringAppend(&tmp, libraryPtr->prefix, -1);
+ Tcl_DStringAppend(&tmp, libraryPtr->prefix, TCL_INDEX_NONE);
if (strcmp(Tcl_DStringValue(&tmp),
Tcl_DStringValue(&pfx)) == 0) {
namesMatch = 1;
@@ -307,7 +307,7 @@ Tcl_LoadObjCmd(
*/
if (prefix != NULL) {
- Tcl_DStringAppend(&pfx, prefix, -1);
+ Tcl_DStringAppend(&pfx, prefix, TCL_INDEX_NONE);
} else {
Tcl_Obj *splitPtr, *pkgGuessPtr;
size_t pElements;
@@ -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, -1));
+ Tcl_SetObjResult(target, Tcl_NewStringObj(iPtr->legacyResult, TCL_INDEX_NONE));
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", -1));
+ "must specify either file name or prefix", TCL_INDEX_NONE));
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, -1);
+ Tcl_DStringAppend(&pfx, prefix, TCL_INDEX_NONE);
TclDStringClear(&tmp);
- Tcl_DStringAppend(&tmp, libraryPtr->prefix, -1);
+ Tcl_DStringAppend(&tmp, libraryPtr->prefix, TCL_INDEX_NONE);
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, -1);
- pkgDesc[1] = Tcl_NewStringObj(libraryPtr->prefix, -1);
+ pkgDesc[0] = Tcl_NewStringObj(libraryPtr->fileName, TCL_INDEX_NONE);
+ pkgDesc[1] = Tcl_NewStringObj(libraryPtr->prefix, TCL_INDEX_NONE);
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, -1);
+ resultObj = Tcl_NewStringObj(libraryPtr->fileName, TCL_INDEX_NONE);
break;
}
}
@@ -1166,8 +1166,8 @@ TclGetLoadedLibraries(
TclNewObj(resultObj);
for (; ipPtr != NULL; ipPtr = ipPtr->nextPtr) {
libraryPtr = ipPtr->libraryPtr;
- pkgDesc[0] = Tcl_NewStringObj(libraryPtr->fileName, -1);
- pkgDesc[1] = Tcl_NewStringObj(libraryPtr->prefix, -1);
+ pkgDesc[0] = Tcl_NewStringObj(libraryPtr->fileName, TCL_INDEX_NONE);
+ pkgDesc[1] = Tcl_NewStringObj(libraryPtr->prefix, TCL_INDEX_NONE);
Tcl_ListObjAppendElement(NULL, resultObj, Tcl_NewListObj(2, pkgDesc));
}
Tcl_SetObjResult(interp, resultObj);
diff --git a/generic/tclLoadNone.c b/generic/tclLoadNone.c
index f60f843..abf6eda 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", -1));
+ "is not available on this system", TCL_INDEX_NONE));
}
return TCL_ERROR;
}
diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c
index 65e2a77..924ffd5 100644
--- a/generic/tclNamesp.c
+++ b/generic/tclNamesp.c
@@ -71,26 +71,26 @@ typedef struct {
* Declarations for functions local to this file:
*/
-static void DeleteImportedCmd(ClientData clientData);
+static void DeleteImportedCmd(void *clientData);
static int DoImport(Tcl_Interp *interp,
Namespace *nsPtr, Tcl_HashEntry *hPtr,
const char *cmdName, const char *pattern,
Namespace *importNsPtr, int allowOverwrite);
static void DupNsNameInternalRep(Tcl_Obj *objPtr,Tcl_Obj *copyPtr);
-static char * ErrorCodeRead(ClientData clientData,Tcl_Interp *interp,
+static char * ErrorCodeRead(void *clientData,Tcl_Interp *interp,
const char *name1, const char *name2, int flags);
-static char * ErrorInfoRead(ClientData clientData,Tcl_Interp *interp,
+static char * ErrorInfoRead(void *clientData,Tcl_Interp *interp,
const char *name1, const char *name2, int flags);
-static char * EstablishErrorCodeTraces(ClientData clientData,
+static char * EstablishErrorCodeTraces(void *clientData,
Tcl_Interp *interp, const char *name1,
const char *name2, int flags);
-static char * EstablishErrorInfoTraces(ClientData clientData,
+static char * EstablishErrorInfoTraces(void *clientData,
Tcl_Interp *interp, const char *name1,
const char *name2, int flags);
static void FreeNsNameInternalRep(Tcl_Obj *objPtr);
static int GetNamespaceFromObj(Tcl_Interp *interp,
Tcl_Obj *objPtr, Tcl_Namespace **nsPtrPtr);
-static int InvokeImportedNRCmd(ClientData clientData,
+static int InvokeImportedNRCmd(void *clientData,
Tcl_Interp *interp,int objc,Tcl_Obj *const objv[]);
static Tcl_ObjCmdProc NamespaceChildrenCmd;
static Tcl_ObjCmdProc NamespaceCodeCmd;
@@ -653,7 +653,7 @@ Tcl_CreateNamespace(
const char *name, /* Name for the new namespace. May be a
* qualified name with names of ancestor
* namespaces separated by "::"s. */
- ClientData clientData, /* One-word value to store with namespace. */
+ void *clientData, /* One-word value to store with namespace. */
Tcl_NamespaceDeleteProc *deleteProc)
/* Function called to delete client data when
* the namespace is deleted. NULL if no
@@ -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, -1);
+ Tcl_DStringAppend(&tmpBuffer, name, TCL_INDEX_NONE);
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", -1));
+ " \"\": only global namespace can have empty name", TCL_INDEX_NONE));
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, -1);
+ Tcl_DStringAppend(buffPtr, ancestorPtr->name, TCL_INDEX_NONE);
TclDStringAppendDString(buffPtr, namePtr);
/*
@@ -1542,7 +1542,7 @@ Tcl_AppendExportList(
for (i = 0; i < nsPtr->numExportPatterns; i++) {
result = Tcl_ListObjAppendElement(interp, objPtr,
- Tcl_NewStringObj(nsPtr->exportArrayPtr[i], -1));
+ Tcl_NewStringObj(nsPtr->exportArrayPtr[i], TCL_INDEX_NONE));
if (result != TCL_OK) {
return result;
}
@@ -1621,7 +1621,7 @@ Tcl_Import(
int result;
TclNewLiteralStringObj(objv[0], "auto_import");
- objv[1] = Tcl_NewStringObj(pattern, -1);
+ objv[1] = Tcl_NewStringObj(pattern, TCL_INDEX_NONE);
Tcl_IncrRefCount(objv[0]);
Tcl_IncrRefCount(objv[1]);
@@ -1762,11 +1762,11 @@ DoImport(
ImportRef *refPtr;
Tcl_DStringInit(&ds);
- Tcl_DStringAppend(&ds, nsPtr->fullName, -1);
+ Tcl_DStringAppend(&ds, nsPtr->fullName, TCL_INDEX_NONE);
if (nsPtr != ((Interp *) interp)->globalNsPtr) {
TclDStringAppendLiteral(&ds, "::");
}
- Tcl_DStringAppend(&ds, cmdName, -1);
+ Tcl_DStringAppend(&ds, cmdName, TCL_INDEX_NONE);
/*
* Check whether creating the new imported command in the current
@@ -2036,7 +2036,7 @@ TclGetOriginalCommand(
static int
InvokeImportedNRCmd(
- ClientData clientData, /* Points to the imported command's
+ void *clientData, /* Points to the imported command's
* ImportedCmdData structure. */
Tcl_Interp *interp, /* Current interpreter. */
int objc, /* Number of arguments. */
@@ -2051,7 +2051,7 @@ InvokeImportedNRCmd(
int
TclInvokeImportedCmd(
- ClientData clientData, /* Points to the imported command's
+ void *clientData, /* Points to the imported command's
* ImportedCmdData structure. */
Tcl_Interp *interp, /* Current interpreter. */
int objc, /* Number of arguments. */
@@ -2084,7 +2084,7 @@ TclInvokeImportedCmd(
static void
DeleteImportedCmd(
- ClientData clientData) /* Points to the imported command's
+ void *clientData) /* Points to the imported command's
* ImportedCmdData structure. */
{
ImportedCmdData *dataPtr = (ImportedCmdData *)clientData;
@@ -3049,11 +3049,11 @@ NamespaceChildrenCmd(
if ((*name == ':') && (*(name+1) == ':')) {
pattern = name;
} else {
- Tcl_DStringAppend(&buffer, nsPtr->fullName, -1);
+ Tcl_DStringAppend(&buffer, nsPtr->fullName, TCL_INDEX_NONE);
if (nsPtr != globalNsPtr) {
TclDStringAppendLiteral(&buffer, "::");
}
- Tcl_DStringAppend(&buffer, name, -1);
+ Tcl_DStringAppend(&buffer, name, TCL_INDEX_NONE);
pattern = Tcl_DStringValue(&buffer);
}
}
@@ -3079,7 +3079,7 @@ NamespaceChildrenCmd(
#endif
) {
Tcl_ListObjAppendElement(interp, listPtr,
- Tcl_NewStringObj(pattern, -1));
+ Tcl_NewStringObj(pattern, TCL_INDEX_NONE));
}
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, -1);
+ elemPtr = Tcl_NewStringObj(childNsPtr->fullName, TCL_INDEX_NONE);
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, -1);
+ objPtr = Tcl_NewStringObj(currNsPtr->fullName, TCL_INDEX_NONE);
}
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, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(currNsPtr->fullName, TCL_INDEX_NONE));
}
return TCL_OK;
}
@@ -3358,7 +3358,7 @@ NamespaceDeleteCmd(
static int
NamespaceEvalCmd(
- ClientData clientData, /* Arbitrary value passed to cmd. */
+ void *clientData, /* Arbitrary value passed to cmd. */
Tcl_Interp *interp, /* Current interpreter. */
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
@@ -3451,7 +3451,7 @@ NRNamespaceEvalCmd(
static int
NsEval_Callback(
- ClientData data[],
+ void *data[],
Tcl_Interp *interp,
int result)
{
@@ -3807,7 +3807,7 @@ NamespaceImportCmd(
static int
NamespaceInscopeCmd(
- ClientData clientData, /* Arbitrary value passed to cmd. */
+ void *clientData, /* Arbitrary value passed to cmd. */
Tcl_Interp *interp, /* Current interpreter. */
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
@@ -3999,7 +3999,7 @@ NamespaceParentCmd(
if (nsPtr->parentPtr != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- nsPtr->parentPtr->fullName, -1));
+ nsPtr->parentPtr->fullName, TCL_INDEX_NONE));
}
return TCL_OK;
}
@@ -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, -1));
+ nsPtr->commandPathArray[i].nsPtr->fullName, TCL_INDEX_NONE));
}
}
Tcl_SetObjResult(interp, resultObj);
@@ -4544,7 +4544,7 @@ NamespaceTailCmd(
}
if (p >= name) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj(p, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(p, TCL_INDEX_NONE));
}
return TCL_OK;
}
diff --git a/generic/tclOO.c b/generic/tclOO.c
index 0d9c7da..bee06e2 100644
--- a/generic/tclOO.c
+++ b/generic/tclOO.c
@@ -67,9 +67,9 @@ static int CloneClassMethod(Tcl_Interp *interp, Class *clsPtr,
Method **newMPtrPtr);
static int CloneObjectMethod(Tcl_Interp *interp, Object *oPtr,
Method *mPtr, Tcl_Obj *namePtr);
-static void DeletedDefineNamespace(ClientData clientData);
-static void DeletedObjdefNamespace(ClientData clientData);
-static void DeletedHelpersNamespace(ClientData clientData);
+static void DeletedDefineNamespace(void *clientData);
+static void DeletedObjdefNamespace(void *clientData);
+static void DeletedHelpersNamespace(void *clientData);
static Tcl_NRPostProc FinalizeAlloc;
static Tcl_NRPostProc FinalizeNext;
static Tcl_NRPostProc FinalizeObjectCall;
@@ -78,23 +78,23 @@ static void InitClassSystemRoots(Tcl_Interp *interp,
Foundation *fPtr);
static int InitFoundation(Tcl_Interp *interp);
static Tcl_InterpDeleteProc KillFoundation;
-static void MyDeleted(ClientData clientData);
-static void ObjectNamespaceDeleted(ClientData clientData);
+static void MyDeleted(void *clientData);
+static void ObjectNamespaceDeleted(void *clientData);
static Tcl_CommandTraceProc ObjectRenamedTrace;
-static inline void RemoveClass(Class **list, int num, int idx);
-static inline void RemoveObject(Object **list, int num, int idx);
+static inline void RemoveClass(Class **list, size_t num, size_t idx);
+static inline void RemoveObject(Object **list, size_t num, size_t idx);
static inline void SquelchCachedName(Object *oPtr);
-static int PublicNRObjectCmd(ClientData clientData,
+static int PublicNRObjectCmd(void *clientData,
Tcl_Interp *interp, int objc,
Tcl_Obj *const *objv);
-static int PrivateNRObjectCmd(ClientData clientData,
+static int PrivateNRObjectCmd(void *clientData,
Tcl_Interp *interp, int objc,
Tcl_Obj *const *objv);
-static int MyClassNRObjCmd(ClientData clientData,
+static int MyClassNRObjCmd(void *clientData,
Tcl_Interp *interp, int objc,
Tcl_Obj *const *objv);
-static void MyClassDeleted(ClientData clientData);
+static void MyClassDeleted(void *clientData);
/*
* Methods in the oo::object and oo::class classes. First, we define a helper
@@ -201,10 +201,10 @@ MODULE_SCOPE const TclOOStubs tclOOStubs;
static inline void
RemoveClass(
Class **list,
- int num,
- int idx)
+ size_t num,
+ size_t idx)
{
- for (; idx < num - 1; idx++) {
+ for (; idx + 1 < num; idx++) {
list[idx] = list[idx + 1];
}
list[idx] = NULL;
@@ -213,10 +213,10 @@ RemoveClass(
static inline void
RemoveObject(
Object **list,
- int num,
- int idx)
+ size_t num,
+ size_t idx)
{
- for (; idx < num - 1; idx++) {
+ for (; idx + 1 < num; idx++) {
list[idx] = list[idx + 1];
}
list[idx] = NULL;
@@ -256,7 +256,7 @@ TclOOInit(
* to be fully provided.
*/
- if (Tcl_EvalEx(interp, initScript, -1, 0) != TCL_OK) {
+ if (Tcl_EvalEx(interp, initScript, TCL_INDEX_NONE, 0) != TCL_OK) {
return TCL_ERROR;
}
@@ -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, -1);
+ Tcl_DStringAppend(&buffer, defineCmds[i].name, TCL_INDEX_NONE);
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, -1);
+ Tcl_DStringAppend(&buffer, objdefCmds[i].name, TCL_INDEX_NONE);
Tcl_CreateObjCommand(interp, Tcl_DStringValue(&buffer),
objdefCmds[i].objProc, INT2PTR(objdefCmds[i].flag), NULL);
Tcl_DStringFree(&buffer);
@@ -429,7 +429,7 @@ InitFoundation(
* Evaluate the remaining definitions, which are a compiled-in Tcl script.
*/
- return Tcl_EvalEx(interp, tclOOSetupScript, -1, 0);
+ return Tcl_EvalEx(interp, tclOOSetupScript, TCL_INDEX_NONE, 0);
}
/*
@@ -535,7 +535,7 @@ InitClassSystemRoots(
static void
DeletedDefineNamespace(
- ClientData clientData)
+ void *clientData)
{
Foundation *fPtr = (Foundation *)clientData;
@@ -544,7 +544,7 @@ DeletedDefineNamespace(
static void
DeletedObjdefNamespace(
- ClientData clientData)
+ void *clientData)
{
Foundation *fPtr = (Foundation *)clientData;
@@ -553,7 +553,7 @@ DeletedObjdefNamespace(
static void
DeletedHelpersNamespace(
- ClientData clientData)
+ void *clientData)
{
Foundation *fPtr = (Foundation *)clientData;
@@ -789,7 +789,7 @@ SquelchCachedName(
static void
MyDeleted(
- ClientData clientData) /* Reference to the object whose [my] has been
+ void *clientData) /* Reference to the object whose [my] has been
* squelched. */
{
Object *oPtr = (Object *)clientData;
@@ -799,7 +799,7 @@ MyDeleted(
static void
MyClassDeleted(
- ClientData clientData)
+ void *clientData)
{
Object *oPtr = (Object *)clientData;
oPtr->myclassCommand = NULL;
@@ -820,7 +820,7 @@ MyClassDeleted(
static void
ObjectRenamedTrace(
- ClientData clientData, /* The object being deleted. */
+ void *clientData, /* The object being deleted. */
TCL_UNUSED(Tcl_Interp *),
TCL_UNUSED(const char *) /*oldName*/,
TCL_UNUSED(const char *) /*newName*/,
@@ -1038,7 +1038,7 @@ TclOOReleaseClassContents(
if (clsPtr->metadataPtr != NULL) {
Tcl_ObjectMetadataType *metadataTypePtr;
- ClientData value;
+ void *value;
FOREACH_HASH(metadataTypePtr, value, clsPtr->metadataPtr) {
metadataTypePtr->deleteProc(value);
@@ -1110,7 +1110,7 @@ TclOOReleaseClassContents(
static void
ObjectNamespaceDeleted(
- ClientData clientData) /* Pointer to the class whose namespace is
+ void *clientData) /* Pointer to the class whose namespace is
* being deleted. */
{
Object *oPtr = (Object *)clientData;
@@ -1261,7 +1261,7 @@ ObjectNamespaceDeleted(
if (oPtr->metadataPtr != NULL) {
Tcl_ObjectMetadataType *metadataTypePtr;
- ClientData value;
+ void *value;
FOREACH_HASH(metadataTypePtr, value, oPtr->metadataPtr) {
metadataTypePtr->deleteProc(value);
@@ -1675,7 +1675,7 @@ Tcl_NewObjectInstance(
{
Class *classPtr = (Class *) cls;
Object *oPtr;
- ClientData clientData[4];
+ void *clientData[4];
oPtr = TclNewObjectInstanceCommon(interp, classPtr, nameStr, nsNameStr);
if (oPtr == NULL) {
@@ -1854,7 +1854,7 @@ TclNewObjectInstanceCommon(
static int
FinalizeAlloc(
- ClientData data[],
+ void *data[],
Tcl_Interp *interp,
int result)
{
@@ -1870,7 +1870,7 @@ FinalizeAlloc(
if (result != TCL_ERROR && Destructing(oPtr)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "object deleted in constructor", -1));
+ "object deleted in constructor", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "STILLBORN", NULL);
result = TCL_ERROR;
}
@@ -1941,7 +1941,7 @@ Tcl_CopyObjectInstance(
if (IsRootClass(oPtr)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "may not clone the class of classes", -1));
+ "may not clone the class of classes", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "CLONING_CLASS", NULL);
return NULL;
}
@@ -1951,8 +1951,8 @@ Tcl_CopyObjectInstance(
*/
o2Ptr = (Object *) Tcl_NewObjectInstance(interp,
- (Tcl_Class) oPtr->selfCls, targetName, targetNamespaceName, -1,
- NULL, -1);
+ (Tcl_Class) oPtr->selfCls, targetName, targetNamespaceName, TCL_INDEX_NONE,
+ NULL, TCL_INDEX_NONE);
if (o2Ptr == NULL) {
return NULL;
}
@@ -2037,7 +2037,7 @@ Tcl_CopyObjectInstance(
if (oPtr->metadataPtr != NULL) {
Tcl_ObjectMetadataType *metadataTypePtr;
- ClientData value, duplicate;
+ void *value, *duplicate;
FOREACH_HASH(metadataTypePtr, value, oPtr->metadataPtr) {
if (metadataTypePtr->cloneProc == NULL) {
@@ -2182,7 +2182,7 @@ Tcl_CopyObjectInstance(
if (clsPtr->metadataPtr != NULL) {
Tcl_ObjectMetadataType *metadataTypePtr;
- ClientData value, duplicate;
+ void *value, *duplicate;
FOREACH_HASH(metadataTypePtr, value, clsPtr->metadataPtr) {
if (metadataTypePtr->cloneProc == NULL) {
@@ -2254,7 +2254,7 @@ CloneObjectMethod(
TclNewInstanceMethod(interp, (Tcl_Object) oPtr, namePtr,
mPtr->flags & PUBLIC_METHOD, NULL, NULL);
} else if (mPtr->typePtr->cloneProc) {
- ClientData newClientData;
+ void *newClientData;
if (mPtr->typePtr->cloneProc(interp, mPtr->clientData,
&newClientData) != TCL_OK) {
@@ -2283,7 +2283,7 @@ CloneClassMethod(
m2Ptr = (Method *) TclNewMethod(interp, (Tcl_Class) clsPtr,
namePtr, mPtr->flags & PUBLIC_METHOD, NULL, NULL);
} else if (mPtr->typePtr->cloneProc) {
- ClientData newClientData;
+ void *newClientData;
if (mPtr->typePtr->cloneProc(interp, mPtr->clientData,
&newClientData) != TCL_OK) {
@@ -2329,7 +2329,7 @@ CloneClassMethod(
* ----------------------------------------------------------------------
*/
-ClientData
+void *
Tcl_ClassGetMetadata(
Tcl_Class clazz,
const Tcl_ObjectMetadataType *typePtr)
@@ -2366,7 +2366,7 @@ void
Tcl_ClassSetMetadata(
Tcl_Class clazz,
const Tcl_ObjectMetadataType *typePtr,
- ClientData metadata)
+ void *metadata)
{
Class *clsPtr = (Class *) clazz;
Tcl_HashEntry *hPtr;
@@ -2409,7 +2409,7 @@ Tcl_ClassSetMetadata(
Tcl_SetHashValue(hPtr, metadata);
}
-ClientData
+void *
Tcl_ObjectGetMetadata(
Tcl_Object object,
const Tcl_ObjectMetadataType *typePtr)
@@ -2446,7 +2446,7 @@ void
Tcl_ObjectSetMetadata(
Tcl_Object object,
const Tcl_ObjectMetadataType *typePtr,
- ClientData metadata)
+ void *metadata)
{
Object *oPtr = (Object *) object;
Tcl_HashEntry *hPtr;
@@ -2504,7 +2504,7 @@ Tcl_ObjectSetMetadata(
int
TclOOPublicObjectCmd(
- ClientData clientData,
+ void *clientData,
Tcl_Interp *interp,
int objc,
Tcl_Obj *const *objv)
@@ -2514,7 +2514,7 @@ TclOOPublicObjectCmd(
static int
PublicNRObjectCmd(
- ClientData clientData,
+ void *clientData,
Tcl_Interp *interp,
int objc,
Tcl_Obj *const *objv)
@@ -2525,7 +2525,7 @@ PublicNRObjectCmd(
int
TclOOPrivateObjectCmd(
- ClientData clientData,
+ void *clientData,
Tcl_Interp *interp,
int objc,
Tcl_Obj *const *objv)
@@ -2535,7 +2535,7 @@ TclOOPrivateObjectCmd(
static int
PrivateNRObjectCmd(
- ClientData clientData,
+ void *clientData,
Tcl_Interp *interp,
int objc,
Tcl_Obj *const *objv)
@@ -2586,7 +2586,7 @@ TclOOInvokeObject(
int
TclOOMyClassObjCmd(
- ClientData clientData,
+ void *clientData,
Tcl_Interp *interp,
int objc,
Tcl_Obj *const *objv)
@@ -2596,7 +2596,7 @@ TclOOMyClassObjCmd(
static int
MyClassNRObjCmd(
- ClientData clientData,
+ void *clientData,
Tcl_Interp *interp,
int objc,
Tcl_Obj *const *objv)
@@ -2749,7 +2749,7 @@ TclOOObjectCmdCore(
}
if (contextPtr->index >= contextPtr->callPtr->numChain) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "no valid method implementation", -1));
+ "no valid method implementation", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "LOOKUP", "METHOD",
TclGetString(methodNamePtr), NULL);
TclOODeleteContext(contextPtr);
@@ -2768,7 +2768,7 @@ TclOOObjectCmdCore(
static int
FinalizeObjectCall(
- ClientData data[],
+ void *data[],
TCL_UNUSED(Tcl_Interp *),
int result)
{
@@ -2929,7 +2929,7 @@ TclNRObjectContextInvokeNext(
static int
FinalizeNext(
- ClientData data[],
+ void *data[],
TCL_UNUSED(Tcl_Interp *),
int result)
{
diff --git a/generic/tclOOBasic.c b/generic/tclOOBasic.c
index ef554d7..d8ef59b 100644
--- a/generic/tclOOBasic.c
+++ b/generic/tclOOBasic.c
@@ -99,10 +99,10 @@ TclOO_Class_Constructor(
* here (and the class definition delegate doesn't run any constructors).
*/
- nameObj = Tcl_NewStringObj(oPtr->namespacePtr->fullName, -1);
- Tcl_AppendToObj(nameObj, ":: oo ::delegate", -1);
+ nameObj = Tcl_NewStringObj(oPtr->namespacePtr->fullName, TCL_INDEX_NONE);
+ Tcl_AppendToObj(nameObj, ":: oo ::delegate", TCL_INDEX_NONE);
Tcl_NewObjectInstance(interp, (Tcl_Class) oPtr->fPtr->classCls,
- TclGetString(nameObj), NULL, -1, NULL, -1);
+ TclGetString(nameObj), NULL, TCL_INDEX_NONE, NULL, TCL_INDEX_NONE);
Tcl_DecrRefCount(nameObj);
/*
@@ -147,7 +147,7 @@ DecrRefsPostClassConstructor(
TclDecrRefCount(invoke[0]);
TclDecrRefCount(invoke[1]);
TclDecrRefCount(invoke[2]);
- invoke[0] = Tcl_NewStringObj("::oo::MixinClassDelegates", -1);
+ invoke[0] = Tcl_NewStringObj("::oo::MixinClassDelegates", TCL_INDEX_NONE);
invoke[1] = TclOOObjectName(interp, oPtr);
Tcl_IncrRefCount(invoke[0]);
Tcl_IncrRefCount(invoke[1]);
@@ -213,7 +213,7 @@ TclOO_Class_Create(
objv[Tcl_ObjectContextSkippedArgs(context)], &len);
if (len == 0) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "object name must not be empty", -1));
+ "object name must not be empty", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "EMPTY_NAME", NULL);
return TCL_ERROR;
}
@@ -278,7 +278,7 @@ TclOO_Class_CreateNs(
objv[Tcl_ObjectContextSkippedArgs(context)], &len);
if (len == 0) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "object name must not be empty", -1));
+ "object name must not be empty", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "EMPTY_NAME", NULL);
return TCL_ERROR;
}
@@ -286,7 +286,7 @@ TclOO_Class_CreateNs(
objv[Tcl_ObjectContextSkippedArgs(context)+1], &len);
if (len == 0) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "namespace name must not be empty", -1));
+ "namespace name must not be empty", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "EMPTY_NAME", NULL);
return TCL_ERROR;
}
@@ -598,14 +598,14 @@ TclOO_Object_Unknown(
TclGetString(objv[skip]));
for (i=0 ; i<numMethodNames-1 ; i++) {
if (i) {
- Tcl_AppendToObj(errorMsg, ", ", -1);
+ Tcl_AppendToObj(errorMsg, ", ", TCL_INDEX_NONE);
}
- Tcl_AppendToObj(errorMsg, methodNames[i], -1);
+ Tcl_AppendToObj(errorMsg, methodNames[i], TCL_INDEX_NONE);
}
if (i) {
- Tcl_AppendToObj(errorMsg, " or ", -1);
+ Tcl_AppendToObj(errorMsg, " or ", TCL_INDEX_NONE);
}
- Tcl_AppendToObj(errorMsg, methodNames[i], -1);
+ Tcl_AppendToObj(errorMsg, methodNames[i], TCL_INDEX_NONE);
Tcl_Free((void *)methodNames);
Tcl_SetObjResult(interp, errorMsg);
Tcl_SetErrorCode(interp, "TCL", "LOOKUP", "METHOD",
@@ -814,7 +814,7 @@ TclOO_Object_VarName(
}
}
- varNamePtr = Tcl_NewStringObj(namespacePtr->fullName, -1);
+ varNamePtr = Tcl_NewStringObj(namespacePtr->fullName, TCL_INDEX_NONE);
Tcl_AppendToObj(varNamePtr, "::", 2);
Tcl_AppendObjToObj(varNamePtr, argPtr);
}
@@ -840,10 +840,10 @@ TclOO_Object_VarName(
* WARNING! This code pokes inside the implementation of hash tables!
*/
- Tcl_AppendToObj(varNamePtr, "(", -1);
+ Tcl_AppendToObj(varNamePtr, "(", TCL_INDEX_NONE);
Tcl_AppendObjToObj(varNamePtr, ((VarInHash *)
varPtr)->entry.key.objPtr);
- Tcl_AppendToObj(varNamePtr, ")", -1);
+ Tcl_AppendToObj(varNamePtr, ")", TCL_INDEX_NONE);
} else {
Tcl_GetVariableFullName(interp, (Tcl_Var) varPtr, varNamePtr);
}
@@ -1097,7 +1097,7 @@ TclOOSelfObjCmd(
if (clsPtr == NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "method not defined by a class", -1));
+ "method not defined by a class", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "UNMATCHED_CONTEXT", NULL);
return TCL_ERROR;
}
@@ -1118,7 +1118,7 @@ TclOOSelfObjCmd(
case SELF_FILTER:
if (!CurrentlyInvoked(contextPtr).isFilter) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "not inside a filtering context", -1));
+ "not inside a filtering context", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "UNMATCHED_CONTEXT", NULL);
return TCL_ERROR;
} else {
@@ -1135,7 +1135,7 @@ TclOOSelfObjCmd(
}
result[0] = TclOOObjectName(interp, oPtr);
- result[1] = Tcl_NewStringObj(type, -1);
+ result[1] = Tcl_NewStringObj(type, TCL_INDEX_NONE);
result[2] = miPtr->mPtr->namePtr;
Tcl_SetObjResult(interp, Tcl_NewListObj(3, result));
return TCL_OK;
@@ -1144,7 +1144,7 @@ TclOOSelfObjCmd(
if ((framePtr->callerVarPtr == NULL) ||
!(framePtr->callerVarPtr->isProcCallFrame & FRAME_IS_METHOD)){
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "caller is not an object", -1));
+ "caller is not an object", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "CONTEXT_REQUIRED", NULL);
return TCL_ERROR;
} else {
@@ -1162,7 +1162,7 @@ TclOOSelfObjCmd(
*/
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "method without declarer!", -1));
+ "method without declarer!", TCL_INDEX_NONE));
return TCL_ERROR;
}
@@ -1194,7 +1194,7 @@ TclOOSelfObjCmd(
*/
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "method without declarer!", -1));
+ "method without declarer!", TCL_INDEX_NONE));
return TCL_ERROR;
}
@@ -1212,7 +1212,7 @@ TclOOSelfObjCmd(
case SELF_TARGET:
if (!CurrentlyInvoked(contextPtr).isFilter) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "not inside a filtering context", -1));
+ "not inside a filtering context", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "UNMATCHED_CONTEXT", NULL);
return TCL_ERROR;
} else {
@@ -1239,7 +1239,7 @@ TclOOSelfObjCmd(
*/
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "method without declarer!", -1));
+ "method without declarer!", TCL_INDEX_NONE));
return TCL_ERROR;
}
result[0] = TclOOObjectName(interp, declarerPtr);
diff --git a/generic/tclOOCall.c b/generic/tclOOCall.c
index 450fc9f..fcf7f2b 100644
--- a/generic/tclOOCall.c
+++ b/generic/tclOOCall.c
@@ -1848,7 +1848,7 @@ TclOORenderCallChain(
? Tcl_GetObjectName(interp,
(Tcl_Object) miPtr->mPtr->declaringClassPtr->thisPtr)
: objectLiteral;
- descObjs[3] = Tcl_NewStringObj(miPtr->mPtr->typePtr->name, -1);
+ descObjs[3] = Tcl_NewStringObj(miPtr->mPtr->typePtr->name, TCL_INDEX_NONE);
objv[i] = Tcl_NewListObj(4, descObjs);
}
diff --git a/generic/tclOODefineCmds.c b/generic/tclOODefineCmds.c
index 63aca58..796a22f 100644
--- a/generic/tclOODefineCmds.c
+++ b/generic/tclOODefineCmds.c
@@ -78,49 +78,49 @@ static inline void RecomputeClassCacheFlag(Object *oPtr);
static int RenameDeleteMethod(Tcl_Interp *interp, Object *oPtr,
int useClass, Tcl_Obj *const fromPtr,
Tcl_Obj *const toPtr);
-static int ClassFilterGet(ClientData clientData,
+static int ClassFilterGet(void *clientData,
Tcl_Interp *interp, Tcl_ObjectContext context,
int objc, Tcl_Obj *const *objv);
-static int ClassFilterSet(ClientData clientData,
+static int ClassFilterSet(void *clientData,
Tcl_Interp *interp, Tcl_ObjectContext context,
int objc, Tcl_Obj *const *objv);
-static int ClassMixinGet(ClientData clientData,
+static int ClassMixinGet(void *clientData,
Tcl_Interp *interp, Tcl_ObjectContext context,
int objc, Tcl_Obj *const *objv);
-static int ClassMixinSet(ClientData clientData,
+static int ClassMixinSet(void *clientData,
Tcl_Interp *interp, Tcl_ObjectContext context,
int objc, Tcl_Obj *const *objv);
-static int ClassSuperGet(ClientData clientData,
+static int ClassSuperGet(void *clientData,
Tcl_Interp *interp, Tcl_ObjectContext context,
int objc, Tcl_Obj *const *objv);
-static int ClassSuperSet(ClientData clientData,
+static int ClassSuperSet(void *clientData,
Tcl_Interp *interp, Tcl_ObjectContext context,
int objc, Tcl_Obj *const *objv);
-static int ClassVarsGet(ClientData clientData,
+static int ClassVarsGet(void *clientData,
Tcl_Interp *interp, Tcl_ObjectContext context,
int objc, Tcl_Obj *const *objv);
-static int ClassVarsSet(ClientData clientData,
+static int ClassVarsSet(void *clientData,
Tcl_Interp *interp, Tcl_ObjectContext context,
int objc, Tcl_Obj *const *objv);
-static int ObjFilterGet(ClientData clientData,
+static int ObjFilterGet(void *clientData,
Tcl_Interp *interp, Tcl_ObjectContext context,
int objc, Tcl_Obj *const *objv);
-static int ObjFilterSet(ClientData clientData,
+static int ObjFilterSet(void *clientData,
Tcl_Interp *interp, Tcl_ObjectContext context,
int objc, Tcl_Obj *const *objv);
-static int ObjMixinGet(ClientData clientData,
+static int ObjMixinGet(void *clientData,
Tcl_Interp *interp, Tcl_ObjectContext context,
int objc, Tcl_Obj *const *objv);
-static int ObjMixinSet(ClientData clientData,
+static int ObjMixinSet(void *clientData,
Tcl_Interp *interp, Tcl_ObjectContext context,
int objc, Tcl_Obj *const *objv);
-static int ObjVarsGet(ClientData clientData,
+static int ObjVarsGet(void *clientData,
Tcl_Interp *interp, Tcl_ObjectContext context,
int objc, Tcl_Obj *const *objv);
-static int ObjVarsSet(ClientData clientData,
+static int ObjVarsSet(void *clientData,
Tcl_Interp *interp, Tcl_ObjectContext context,
int objc, Tcl_Obj *const *objv);
-static int ResolveClass(ClientData clientData,
+static int ResolveClass(void *clientData,
Tcl_Interp *interp, Tcl_ObjectContext context,
int objc, Tcl_Obj *const *objv);
@@ -633,7 +633,7 @@ RenameDeleteMethod(
if (hPtr == newHPtr) {
renameToSelf:
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "cannot rename method to itself", -1));
+ "cannot rename method to itself", TCL_INDEX_NONE));
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", -1));
+ "bad call of unknown handler", TCL_INDEX_NONE));
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, -1);
+ newObjv[0] = Tcl_NewStringObj(matchedStr, TCL_INDEX_NONE);
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", -1));
+ "no definition namespace available", TCL_INDEX_NONE));
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", -1));
+ " an ::oo::define or ::oo::objdefine command", TCL_INDEX_NONE));
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", -1));
+ " deleted", TCL_INDEX_NONE));
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, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(errMsg, TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "LOOKUP", "CLASS",
TclGetString(className), NULL);
return NULL;
@@ -1344,7 +1344,7 @@ TclOODefineObjSelfObjCmd(
int
TclOODefinePrivateObjCmd(
- ClientData clientData,
+ void *clientData,
Tcl_Interp *interp,
int objc,
Tcl_Obj *const *objv)
@@ -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", -1));
+ "may not modify the class of the root object class", TCL_INDEX_NONE));
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", -1));
+ "may not modify the class of the class of classes", TCL_INDEX_NONE));
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", -1));
+ "may not change classes into an instance of themselves", TCL_INDEX_NONE));
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", -1));
+ "attempt to misuse API", TCL_INDEX_NONE));
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, -1);
+ nsNamePtr = Tcl_NewStringObj(nsPtr->fullName, TCL_INDEX_NONE);
Tcl_IncrRefCount(nsNamePtr);
}
@@ -1680,7 +1680,7 @@ TclOODefineDefnNsObjCmd(
int
TclOODefineDeleteMethodObjCmd(
- ClientData clientData,
+ void *clientData,
Tcl_Interp *interp,
int objc,
Tcl_Obj *const *objv)
@@ -1700,7 +1700,7 @@ TclOODefineDeleteMethodObjCmd(
}
if (!isInstanceDeleteMethod && !oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", -1));
+ "attempt to misuse API", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -1802,7 +1802,7 @@ TclOODefineDestructorObjCmd(
int
TclOODefineExportObjCmd(
- ClientData clientData,
+ void *clientData,
Tcl_Interp *interp,
int objc,
Tcl_Obj *const *objv)
@@ -1826,7 +1826,7 @@ TclOODefineExportObjCmd(
clsPtr = oPtr->classPtr;
if (!isInstanceExport && !clsPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", -1));
+ "attempt to misuse API", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -1898,7 +1898,7 @@ TclOODefineExportObjCmd(
int
TclOODefineForwardObjCmd(
- ClientData clientData,
+ void *clientData,
Tcl_Interp *interp,
int objc,
Tcl_Obj *const *objv)
@@ -1920,7 +1920,7 @@ TclOODefineForwardObjCmd(
}
if (!isInstanceForward && !oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", -1));
+ "attempt to misuse API", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -1962,7 +1962,7 @@ TclOODefineForwardObjCmd(
int
TclOODefineMethodObjCmd(
- ClientData clientData,
+ void *clientData,
Tcl_Interp *interp,
int objc,
Tcl_Obj *const *objv)
@@ -1998,7 +1998,7 @@ TclOODefineMethodObjCmd(
}
if (!isInstanceMethod && !oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", -1));
+ "attempt to misuse API", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -2058,7 +2058,7 @@ TclOODefineMethodObjCmd(
int
TclOODefineRenameMethodObjCmd(
- ClientData clientData,
+ void *clientData,
Tcl_Interp *interp,
int objc,
Tcl_Obj *const *objv)
@@ -2077,7 +2077,7 @@ TclOODefineRenameMethodObjCmd(
}
if (!isInstanceRenameMethod && !oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", -1));
+ "attempt to misuse API", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -2115,7 +2115,7 @@ TclOODefineRenameMethodObjCmd(
int
TclOODefineUnexportObjCmd(
- ClientData clientData,
+ void *clientData,
Tcl_Interp *interp,
int objc,
Tcl_Obj *const *objv)
@@ -2139,7 +2139,7 @@ TclOODefineUnexportObjCmd(
clsPtr = oPtr->classPtr;
if (!isInstanceUnexport && !clsPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", -1));
+ "attempt to misuse API", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -2268,13 +2268,13 @@ TclOODefineSlots(
Foundation *fPtr)
{
const struct DeclaredSlot *slotInfoPtr;
- Tcl_Obj *getName = Tcl_NewStringObj("Get", -1);
- Tcl_Obj *setName = Tcl_NewStringObj("Set", -1);
- Tcl_Obj *resolveName = Tcl_NewStringObj("Resolve", -1);
+ 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);
Class *slotCls;
slotCls = ((Object *) Tcl_NewObjectInstance(fPtr->interp, (Tcl_Class)
- fPtr->classCls, "::oo::Slot", NULL, -1, NULL, 0))->classPtr;
+ fPtr->classCls, "::oo::Slot", NULL, TCL_INDEX_NONE, NULL, 0))->classPtr;
if (slotCls == NULL) {
return TCL_ERROR;
}
@@ -2283,7 +2283,7 @@ TclOODefineSlots(
Tcl_IncrRefCount(resolveName);
for (slotInfoPtr = slots ; slotInfoPtr->name ; slotInfoPtr++) {
Tcl_Object slotObject = Tcl_NewObjectInstance(fPtr->interp,
- (Tcl_Class) slotCls, slotInfoPtr->name, NULL, -1, NULL, 0);
+ (Tcl_Class) slotCls, slotInfoPtr->name, NULL, TCL_INDEX_NONE, NULL, 0);
if (slotObject == NULL) {
continue;
@@ -2335,7 +2335,7 @@ ClassFilterGet(
return TCL_ERROR;
} else if (!oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", -1));
+ "attempt to misuse API", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -2371,7 +2371,7 @@ ClassFilterSet(
return TCL_ERROR;
} else if (!oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", -1));
+ "attempt to misuse API", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
} else if (TclListObjGetElementsM(interp, objv[0], &filterc,
@@ -2416,7 +2416,7 @@ ClassMixinGet(
return TCL_ERROR;
} else if (!oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", -1));
+ "attempt to misuse API", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -2455,7 +2455,7 @@ ClassMixinSet(
return TCL_ERROR;
} else if (!oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", -1));
+ "attempt to misuse API", TCL_INDEX_NONE));
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", -1));
+ "may not mix a class into itself", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "SELF_MIXIN", NULL);
goto freeAndError;
}
@@ -2522,7 +2522,7 @@ ClassSuperGet(
return TCL_ERROR;
} else if (!oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", -1));
+ "attempt to misuse API", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -2561,12 +2561,12 @@ ClassSuperSet(
return TCL_ERROR;
} else if (!oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", -1));
+ "attempt to misuse API", TCL_INDEX_NONE));
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", -1));
+ "may not modify the superclass of the root object", TCL_INDEX_NONE));
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", -1));
+ "attempt to form circular dependency graph", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "CIRCULARITY", NULL);
failedAfterAlloc:
for (; i-- > 0 ;) {
@@ -2689,7 +2689,7 @@ ClassVarsGet(
return TCL_ERROR;
} else if (!oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", -1));
+ "attempt to misuse API", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
}
@@ -2736,7 +2736,7 @@ ClassVarsSet(
return TCL_ERROR;
} else if (!oPtr->classPtr) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "attempt to misuse API", -1));
+ "attempt to misuse API", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "MONKEY_BUSINESS", NULL);
return TCL_ERROR;
} else if (TclListObjGetElementsM(interp, objv[0], &varc,
diff --git a/generic/tclOOInfo.c b/generic/tclOOInfo.c
index b4f9c56..a49282c 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", -1),
- Tcl_NewStringObj("::oo::InfoObject", -1));
- Tcl_DictObjPut(NULL, mapDict, Tcl_NewStringObj("class", -1),
- Tcl_NewStringObj("::oo::InfoClass", -1));
+ 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_SetEnsembleMappingDict(interp, infoCmd, mapDict);
}
}
@@ -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", -1));
+ "definition not available for this kind of method", TCL_INDEX_NONE));
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, -1));
+ Tcl_NewStringObj(localPtr->name, TCL_INDEX_NONE));
if (localPtr->defValuePtr != NULL) {
Tcl_ListObjAppendElement(NULL, argObj, localPtr->defValuePtr);
}
@@ -610,7 +610,7 @@ InfoObjectMethodsCmd(
for (i=0 ; i<numNames ; i++) {
Tcl_ListObjAppendElement(NULL, resultObj,
- Tcl_NewStringObj(names[i], -1));
+ Tcl_NewStringObj(names[i], TCL_INDEX_NONE));
}
if (numNames > 0) {
Tcl_Free((void *)names);
@@ -679,7 +679,7 @@ InfoObjectMethodTypeCmd(
goto unknownMethod;
}
- Tcl_SetObjResult(interp, Tcl_NewStringObj(mPtr->typePtr->name, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(mPtr->typePtr->name, TCL_INDEX_NONE));
return TCL_OK;
}
@@ -787,7 +787,7 @@ InfoObjectNsCmd(
}
Tcl_SetObjResult(interp,
- Tcl_NewStringObj(oPtr->namespacePtr->fullName, -1));
+ Tcl_NewStringObj(oPtr->namespacePtr->fullName, TCL_INDEX_NONE));
return TCL_OK;
}
@@ -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", -1));
+ "definition not available for this kind of method", TCL_INDEX_NONE));
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, -1));
+ Tcl_NewStringObj(localPtr->name, TCL_INDEX_NONE));
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", -1));
+ "definition not available for this kind of method", TCL_INDEX_NONE));
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, -1));
+ Tcl_NewStringObj(localPtr->name, TCL_INDEX_NONE));
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", -1));
+ "definition not available for this kind of method", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "METHOD_TYPE", NULL);
return TCL_ERROR;
}
@@ -1365,7 +1365,7 @@ InfoClassMethodsCmd(
for (i=0 ; i<numNames ; i++) {
Tcl_ListObjAppendElement(NULL, resultObj,
- Tcl_NewStringObj(names[i], -1));
+ Tcl_NewStringObj(names[i], TCL_INDEX_NONE));
}
if (numNames > 0) {
Tcl_Free((void *)names);
@@ -1431,7 +1431,7 @@ InfoClassMethodTypeCmd(
goto unknownMethod;
}
- Tcl_SetObjResult(interp, Tcl_NewStringObj(mPtr->typePtr->name, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(mPtr->typePtr->name, TCL_INDEX_NONE));
return TCL_OK;
}
@@ -1663,7 +1663,7 @@ InfoObjectCallCmd(
NULL);
if (contextPtr == NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "cannot construct any call chain", -1));
+ "cannot construct any call chain", TCL_INDEX_NONE));
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", -1));
+ "cannot construct any call chain", TCL_INDEX_NONE));
return TCL_ERROR;
}
Tcl_SetObjResult(interp, TclOORenderCallChain(interp, callPtr));
diff --git a/generic/tclOOMethod.c b/generic/tclOOMethod.c
index 70f9503..2ac21b8 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, -1);
+ Tcl_Obj *namePtr = Tcl_NewStringObj(dcm->name, TCL_INDEX_NONE);
Tcl_IncrRefCount(namePtr);
TclNewMethod(interp, (Tcl_Class) clsPtr, namePtr,
@@ -1410,7 +1410,7 @@ CloneProcedureMethod(
TclNewObj(argObj);
Tcl_ListObjAppendElement(NULL, argObj,
- Tcl_NewStringObj(localPtr->name, -1));
+ Tcl_NewStringObj(localPtr->name, TCL_INDEX_NONE));
if (localPtr->defValuePtr != NULL) {
Tcl_ListObjAppendElement(NULL, argObj, localPtr->defValuePtr);
}
@@ -1481,7 +1481,7 @@ TclOONewForwardInstanceMethod(
}
if (prefixLen < 1) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "method forward prefix must be non-empty", -1));
+ "method forward prefix must be non-empty", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "BAD_FORWARD", NULL);
return NULL;
}
@@ -1520,7 +1520,7 @@ TclOONewForwardMethod(
}
if (prefixLen < 1) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "method forward prefix must be non-empty", -1));
+ "method forward prefix must be non-empty", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OO", "BAD_FORWARD", NULL);
return NULL;
}
@@ -1707,7 +1707,7 @@ InitEnsembleRewrite(
int *lengthPtr) /* Where to write the resulting length of the
* array of rewritten arguments. */
{
- unsigned len = rewriteLength + objc - toRewrite;
+ size_t len = rewriteLength + objc - toRewrite;
Tcl_Obj **argObjs = (Tcl_Obj **)TclStackAlloc(interp, sizeof(Tcl_Obj *) * len);
memcpy(argObjs, rewriteObjs, rewriteLength * sizeof(Tcl_Obj *));
diff --git a/generic/tclObj.c b/generic/tclObj.c
index eaa6766..16b9ca1 100644
--- a/generic/tclObj.c
+++ b/generic/tclObj.c
@@ -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), -1));
+ Tcl_NewStringObj((char *)Tcl_GetHashKey(&typeTable, hPtr), TCL_INDEX_NONE));
}
Tcl_MutexUnlock(&tableMutex);
return TCL_OK;
@@ -2009,7 +2009,7 @@ Tcl_GetBoolFromObj(
if (interp) {
TclNewObj(objPtr);
TclParseNumber(interp, objPtr, (flags & TCL_NULL_OK)
- ? "boolean value or \"\"" : "boolean value", NULL, -1, NULL, 0);
+ ? "boolean value or \"\"" : "boolean value", NULL, TCL_INDEX_NONE, NULL, 0);
Tcl_DecrRefCount(objPtr);
}
return TCL_ERROR;
@@ -2132,7 +2132,7 @@ TclSetBooleanFromAny(
TclNewLiteralStringObj(msg, "expected boolean value but got \"");
Tcl_AppendLimitedToObj(msg, str, length, 50, "");
- Tcl_AppendToObj(msg, "\"", -1);
+ Tcl_AppendToObj(msg, "\"", TCL_INDEX_NONE);
Tcl_SetObjResult(interp, msg);
Tcl_SetErrorCode(interp, "TCL", "VALUE", "BOOLEAN", NULL);
}
@@ -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", -1));
+ "floating point value is Not a Number", TCL_INDEX_NONE));
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, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(s, TCL_INDEX_NONE));
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, -1);
+ Tcl_Obj *msg = Tcl_NewStringObj(s, TCL_INDEX_NONE);
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, -1);
+ Tcl_Obj *msg = Tcl_NewStringObj(s, TCL_INDEX_NONE);
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, -1);
+ Tcl_Obj *msg = Tcl_NewStringObj(s, TCL_INDEX_NONE);
Tcl_SetObjResult(interp, msg);
Tcl_SetErrorCode(interp, "ARITH", "IOVERFLOW", s, NULL);
@@ -4539,12 +4539,12 @@ Tcl_RepresentationCmd(
}
if (objv[1]->bytes) {
- Tcl_AppendToObj(descObj, ", string representation \"", -1);
+ Tcl_AppendToObj(descObj, ", string representation \"", TCL_INDEX_NONE);
Tcl_AppendLimitedToObj(descObj, objv[1]->bytes, objv[1]->length,
16, "...");
- Tcl_AppendToObj(descObj, "\"", -1);
+ Tcl_AppendToObj(descObj, "\"", TCL_INDEX_NONE);
} else {
- Tcl_AppendToObj(descObj, ", no string representation", -1);
+ Tcl_AppendToObj(descObj, ", no string representation", TCL_INDEX_NONE);
}
Tcl_SetObjResult(interp, descObj);
diff --git a/generic/tclParse.c b/generic/tclParse.c
index 1209a3b..75ffa26 100644
--- a/generic/tclParse.c
+++ b/generic/tclParse.c
@@ -228,7 +228,7 @@ Tcl_ParseCommand(
if ((start == NULL) && (numBytes != 0)) {
if (interp != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "can't parse a NULL pointer", -1));
+ "can't parse a NULL pointer", TCL_INDEX_NONE));
}
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", -1));
+ "extra characters after close-quote", TCL_INDEX_NONE));
}
parsePtr->errorType = TCL_PARSE_QUOTE_EXTRA;
} else {
if (interp != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "extra characters after close-brace", -1));
+ "extra characters after close-brace", TCL_INDEX_NONE));
}
parsePtr->errorType = TCL_PARSE_BRACE_EXTRA;
}
@@ -1179,7 +1179,7 @@ ParseTokens(
if (numBytes == 0) {
if (parsePtr->interp != NULL) {
Tcl_SetObjResult(parsePtr->interp, Tcl_NewStringObj(
- "missing close-bracket", -1));
+ "missing close-bracket", TCL_INDEX_NONE));
}
parsePtr->errorType = TCL_PARSE_MISSING_BRACKET;
parsePtr->term = tokenPtr->start;
@@ -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", -1));
+ "missing close-brace for variable name", TCL_INDEX_NONE));
}
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 )", -1));
+ "missing )", TCL_INDEX_NONE));
}
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", -1));
+ "invalid character in array index", TCL_INDEX_NONE));
}
parsePtr->errorType = TCL_PARSE_SYNTAX;
parsePtr->term = src;
@@ -1558,7 +1558,7 @@ Tcl_ParseVar(
int code;
Tcl_Parse *parsePtr = (Tcl_Parse *)TclStackAlloc(interp, sizeof(Tcl_Parse));
- if (Tcl_ParseVarName(interp, start, -1, parsePtr, 0) != TCL_OK) {
+ if (Tcl_ParseVarName(interp, start, TCL_INDEX_NONE, parsePtr, 0) != TCL_OK) {
TclStackFree(interp, parsePtr);
return NULL;
}
@@ -1765,7 +1765,7 @@ Tcl_ParseBraces(
}
Tcl_SetObjResult(parsePtr->interp, Tcl_NewStringObj(
- "missing close-brace", -1));
+ "missing close-brace", TCL_INDEX_NONE));
/*
* 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", -1);
+ ": possible unbalanced brace in comment", TCL_INDEX_NONE);
goto error;
}
break;
@@ -1867,7 +1867,7 @@ Tcl_ParseQuotedString(
if (*parsePtr->term != '"') {
if (parsePtr->interp != NULL) {
Tcl_SetObjResult(parsePtr->interp, Tcl_NewStringObj(
- "missing \"", -1));
+ "missing \"", TCL_INDEX_NONE));
}
parsePtr->errorType = TCL_PARSE_MISSING_QUOTE;
parsePtr->term = start;
diff --git a/generic/tclPathObj.c b/generic/tclPathObj.c
index d0826b7..19c1b9d 100644
--- a/generic/tclPathObj.c
+++ b/generic/tclPathObj.c
@@ -751,7 +751,7 @@ GetExtension(
if (extension == NULL) {
TclNewObj(ret);
} else {
- ret = Tcl_NewStringObj(extension, -1);
+ ret = Tcl_NewStringObj(extension, TCL_INDEX_NONE);
}
Tcl_IncrRefCount(ret);
return ret;
diff --git a/generic/tclPipe.c b/generic/tclPipe.c
index 137b415..b18b789 100644
--- a/generic/tclPipe.c
+++ b/generic/tclPipe.c
@@ -335,7 +335,7 @@ TclCleanupChildren(
Tcl_Seek(errorChan, 0, SEEK_SET);
TclNewObj(objPtr);
- count = Tcl_ReadChars(errorChan, objPtr, -1, 0);
+ count = Tcl_ReadChars(errorChan, objPtr, TCL_INDEX_NONE, 0);
if (count == -1) {
result = TCL_ERROR;
Tcl_DecrRefCount(objPtr);
@@ -361,7 +361,7 @@ TclCleanupChildren(
if ((abnormalExit != 0) && (anyErrorInfo == 0) && (interp != NULL)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "child process exited abnormally", -1));
+ "child process exited abnormally", TCL_INDEX_NONE));
}
return result;
}
@@ -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", -1));
+ "illegal use of | or |& in command", TCL_INDEX_NONE));
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", -1));
+ "illegal use of | or |& in command", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "EXEC", "PIPESYNTAX",
NULL);
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", -1));
+ " standard output was redirected", TCL_INDEX_NONE));
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", -1));
+ " standard input was redirected", TCL_INDEX_NONE));
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", -1));
+ "pipe for command could not be created", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "EXEC", "NOPIPE", NULL);
goto error;
}
diff --git a/generic/tclPkg.c b/generic/tclPkg.c
index 34346f9..132a219 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, -1);
+ pkgPtr->version = Tcl_NewStringObj(version, TCL_INDEX_NONE);
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, -1));
+ Tcl_ListObjAppendElement(interp, list, Tcl_NewStringObj(fileName, TCL_INDEX_NONE));
}
}
@@ -407,7 +407,7 @@ Tcl_PkgRequireEx(
!= CheckVersionAndConvert(interp, version, NULL, NULL)) {
return NULL;
}
- ov = Tcl_NewStringObj(version, -1);
+ ov = Tcl_NewStringObj(version, TCL_INDEX_NONE);
if (exact) {
Tcl_AppendStringsToObj(ov, "-", version, NULL);
}
@@ -531,7 +531,7 @@ PkgRequireCoreStep1(
*/
Tcl_DStringInit(&command);
- Tcl_DStringAppend(&command, script, -1);
+ Tcl_DStringAppend(&command, script, TCL_INDEX_NONE);
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, -1),
+ Tcl_NREvalObj(interp, Tcl_NewStringObj(bestPtr->script, TCL_INDEX_NONE),
TCL_EVAL_GLOBAL);
}
return TCL_OK;
@@ -1200,7 +1200,7 @@ TclNRPackageObjCmd(
if (objc == 4) {
Tcl_Free(argv3i);
Tcl_SetObjResult(interp,
- Tcl_NewStringObj(availPtr->script, -1));
+ Tcl_NewStringObj(availPtr->script, TCL_INDEX_NONE));
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), -1));
+ (char *)Tcl_GetHashKey(tablePtr, hPtr), TCL_INDEX_NONE));
}
}
Tcl_SetObjResult(interp, resultObj);
@@ -1353,7 +1353,7 @@ TclNRPackageObjCmd(
* Create a new-style requirement for the exact version.
*/
- ov = Tcl_NewStringObj(version, -1);
+ ov = Tcl_NewStringObj(version, TCL_INDEX_NONE);
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, -1));
+ Tcl_NewStringObj(iPtr->packageUnknown, TCL_INDEX_NONE));
}
} else if (objc == 3) {
if (iPtr->packageUnknown != NULL) {
@@ -1456,7 +1456,7 @@ TclNRPackageObjCmd(
*/
Tcl_SetObjResult(interp,
- Tcl_NewStringObj(pkgPreferOptions[iPtr->packagePrefer], -1));
+ Tcl_NewStringObj(pkgPreferOptions[iPtr->packagePrefer], TCL_INDEX_NONE));
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, -1));
+ Tcl_NewStringObj(availPtr->version, TCL_INDEX_NONE));
}
}
Tcl_SetObjResult(interp, resultObj);
diff --git a/generic/tclProc.c b/generic/tclProc.c
index 01bc337..c8a304a 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 \"", -1);
+ "too many fields in argument specifier \"", TCL_INDEX_NONE);
Tcl_AppendObjToObj(errorObj, argArray[i]);
- Tcl_AppendToObj(errorObj, "\"", -1);
+ Tcl_AppendToObj(errorObj, "\"", TCL_INDEX_NONE);
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", -1));
+ "argument with no name", TCL_INDEX_NONE));
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 \"", -1);
+ "formal parameter \"", TCL_INDEX_NONE);
Tcl_AppendObjToObj(errorObj, fieldValues[0]);
- Tcl_AppendToObj(errorObj, "\" is not a simple name", -1);
+ Tcl_AppendToObj(errorObj, "\" is not a simple name", TCL_INDEX_NONE);
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", -1);
+ "default value inconsistent with precompiled body", TCL_INDEX_NONE);
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", -1);
+ desiredObjs[0] = Tcl_NewStringObj("lambdaExpr", TCL_INDEX_NONE);
} else {
desiredObjs[0] = framePtr->objv[skip-1];
}
@@ -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", -1));
+ "a precompiled script jumped interps", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "PROC",
"CROSSINTERPBYTECODE", NULL);
return TCL_ERROR;
@@ -1969,7 +1969,7 @@ TclProcCompileProc(
TclNewLiteralStringObj(message, "Compiling ");
Tcl_IncrRefCount(message);
Tcl_AppendStringsToObj(message, description, " \"", NULL);
- Tcl_AppendLimitedToObj(message, procName, -1, 50, NULL);
+ Tcl_AppendLimitedToObj(message, procName, TCL_INDEX_NONE, 50, NULL);
fprintf(stdout, "%s\"\n", TclGetString(message));
Tcl_DecrRefCount(message);
}
diff --git a/generic/tclProcess.c b/generic/tclProcess.c
index 075877e..0dad7c4 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", -1);
- errorStrings[1] = Tcl_NewStringObj(Tcl_ErrnoId(), -1);
- errorStrings[2] = Tcl_NewStringObj(msg, -1);
+ 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);
*errorObjPtr = Tcl_NewListObj(3, errorStrings);
}
return TCL_PROCESS_ERROR;
@@ -256,9 +256,9 @@ WaitProcessStatus(
*/
if (msgObjPtr) *msgObjPtr = Tcl_NewStringObj(
- "child process exited abnormally", -1);
+ "child process exited abnormally", TCL_INDEX_NONE);
if (errorObjPtr) {
- errorStrings[0] = Tcl_NewStringObj("CHILDSTATUS", -1);
+ errorStrings[0] = Tcl_NewStringObj("CHILDSTATUS", TCL_INDEX_NONE);
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", -1);
+ errorStrings[0] = Tcl_NewStringObj("CHILDKILLED", TCL_INDEX_NONE);
TclNewIntObj(errorStrings[1], resolvedPid);
- errorStrings[2] = Tcl_NewStringObj(Tcl_SignalId(WTERMSIG(waitStatus)), -1);
- errorStrings[3] = Tcl_NewStringObj(msg, -1);
+ errorStrings[2] = Tcl_NewStringObj(Tcl_SignalId(WTERMSIG(waitStatus)), TCL_INDEX_NONE);
+ errorStrings[3] = Tcl_NewStringObj(msg, TCL_INDEX_NONE);
*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", -1);
+ errorStrings[0] = Tcl_NewStringObj("CHILDSUSP", TCL_INDEX_NONE);
TclNewIntObj(errorStrings[1], resolvedPid);
- errorStrings[2] = Tcl_NewStringObj(Tcl_SignalId(WSTOPSIG(waitStatus)), -1);
- errorStrings[3] = Tcl_NewStringObj(msg, -1);
+ errorStrings[2] = Tcl_NewStringObj(Tcl_SignalId(WSTOPSIG(waitStatus)), TCL_INDEX_NONE);
+ errorStrings[3] = Tcl_NewStringObj(msg, TCL_INDEX_NONE);
*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", -1);
+ "child wait status didn't make sense\n", TCL_INDEX_NONE);
if (errorObjPtr) {
- errorStrings[0] = Tcl_NewStringObj("TCL", -1);
- errorStrings[1] = Tcl_NewStringObj("OPERATION", -1);
- errorStrings[2] = Tcl_NewStringObj("EXEC", -1);
- errorStrings[3] = Tcl_NewStringObj("ODDWAITRESULT", -1);
+ 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);
TclNewIntObj(errorStrings[4], resolvedPid);
*errorObjPtr = Tcl_NewListObj(5, errorStrings);
}
diff --git a/generic/tclRegexp.c b/generic/tclRegexp.c
index 4e3c6c5..07beffd 100644
--- a/generic/tclRegexp.c
+++ b/generic/tclRegexp.c
@@ -221,9 +221,9 @@ Tcl_RegExpExec(
*/
Tcl_DStringInit(&ds);
- ustr = Tcl_UtfToUniCharDString(text, -1, &ds);
+ ustr = Tcl_UtfToUniCharDString(text, TCL_INDEX_NONE, &ds);
numChars = Tcl_DStringLength(&ds) / sizeof(Tcl_UniChar);
- result = RegExpExecUniChar(interp, re, ustr, numChars, -1 /* nmatches */,
+ result = RegExpExecUniChar(interp, re, ustr, numChars, TCL_INDEX_NONE /* nmatches */,
flags);
Tcl_DStringFree(&ds);
@@ -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, -1));
+ Tcl_NewStringObj(inf->text, TCL_INDEX_NONE));
}
}
Tcl_ListObjAppendElement(NULL, resultObj, infoObj);
diff --git a/generic/tclResult.c b/generic/tclResult.c
index c0266bc..6a36fdf 100644
--- a/generic/tclResult.c
+++ b/generic/tclResult.c
@@ -317,7 +317,7 @@ Tcl_AppendResult(
if (bytes == NULL) {
break;
}
- Tcl_AppendToObj(objPtr, bytes, -1);
+ Tcl_AppendToObj(objPtr, bytes, TCL_INDEX_NONE);
}
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, -1);
+ Tcl_Obj *elementPtr = Tcl_NewStringObj(element, TCL_INDEX_NONE);
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, -1));
+ Tcl_ListObjAppendElement(NULL, errorObj, Tcl_NewStringObj(elem, TCL_INDEX_NONE));
}
Tcl_SetObjErrorCode(interp, errorObj);
va_end(argList);
diff --git a/generic/tclScan.c b/generic/tclScan.c
index ee18174..6a5bfb7 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 %", -1);
- Tcl_AppendToObj(errorMsg, buf, -1);
- Tcl_AppendToObj(errorMsg, " conversion", -1);
+ "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);
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", -1));
+ "unmatched [ in format string", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "FORMAT", "BRACKET", NULL);
goto error;
default:
buf[Tcl_UniCharToUtf(ch, buf)] = '\0';
errorMsg = Tcl_NewStringObj(
- "bad scan conversion character \"", -1);
- Tcl_AppendToObj(errorMsg, buf, -1);
- Tcl_AppendToObj(errorMsg, "\"", -1);
+ "bad scan conversion character \"", TCL_INDEX_NONE);
+ Tcl_AppendToObj(errorMsg, buf, TCL_INDEX_NONE);
+ Tcl_AppendToObj(errorMsg, "\"", TCL_INDEX_NONE);
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", -1));
+ "\"%n$\" argument index out of range", TCL_INDEX_NONE));
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", -1));
+ "insufficient memory to create bignum", TCL_INDEX_NONE));
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", -1));
+ "unsigned bignum scans are invalid", TCL_INDEX_NONE));
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", -1));
+ "insufficient memory to create bignum", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "MEMORY", NULL);
return TCL_ERROR;
} else {
diff --git a/generic/tclStrToD.c b/generic/tclStrToD.c
index 597fe77..2f29617 100644
--- a/generic/tclStrToD.c
+++ b/generic/tclStrToD.c
@@ -1523,7 +1523,7 @@ TclParseNumber(
expected);
Tcl_AppendLimitedToObj(msg, bytes, numBytes, 50, "");
- Tcl_AppendToObj(msg, "\"", -1);
+ Tcl_AppendToObj(msg, "\"", TCL_INDEX_NONE);
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, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(s, TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "ARITH", "IOVERFLOW", s, NULL);
}
return TCL_ERROR;
diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c
index e1376f4..0acc6e2 100644
--- a/generic/tclStringObj.c
+++ b/generic/tclStringObj.c
@@ -1683,7 +1683,7 @@ AppendUtfToUnicodeRep(
return;
}
- ExtendUnicodeRepWithString(objPtr, bytes, numBytes, -1);
+ ExtendUnicodeRepWithString(objPtr, bytes, numBytes, TCL_INDEX_NONE);
TclInvalidateStringRep(objPtr);
stringPtr = GET_STRING(objPtr);
stringPtr->allocated = 0;
@@ -1812,7 +1812,7 @@ Tcl_AppendStringsToObj(
if (bytes == NULL) {
break;
}
- Tcl_AppendToObj(objPtr, bytes, -1);
+ Tcl_AppendToObj(objPtr, bytes, TCL_INDEX_NONE);
}
va_end(argList);
}
@@ -2588,7 +2588,7 @@ Tcl_AppendFormatToObj(
errorMsg:
if (interp != NULL) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj(msg, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(msg, TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "FORMAT", errCode, NULL);
}
error:
diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c
index 1186aa3..dbd8b52 100644
--- a/generic/tclStubInit.c
+++ b/generic/tclStubInit.c
@@ -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", -1));
+ "integer value too large to represent", TCL_INDEX_NONE));
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", -1));
+ "integer value too large to represent", TCL_INDEX_NONE));
result = TCL_ERROR;
}
}
diff --git a/generic/tclTest.c b/generic/tclTest.c
index b6c7f77..06d5064 100644
--- a/generic/tclTest.c
+++ b/generic/tclTest.c
@@ -62,6 +62,7 @@ static Tcl_Interp *delInterp;
typedef struct TestCommandTokenRef {
int id; /* Identifier for this reference. */
Tcl_Command token; /* Tcl's token for the command. */
+ const char *value;
struct TestCommandTokenRef *nextPtr;
/* Next in list of references. */
} TestCommandTokenRef;
@@ -1143,6 +1144,18 @@ TestcmdinfoCmd(
}
static int
+CmdProc0(
+ void *clientData, /* String to return. */
+ Tcl_Interp *interp, /* Current interpreter. */
+ TCL_UNUSED(int) /*argc*/,
+ TCL_UNUSED(const char **) /*argv*/)
+{
+ TestCommandTokenRef *refPtr = (TestCommandTokenRef *) clientData;
+ Tcl_AppendResult(interp, "CmdProc1 ", refPtr->value, NULL);
+ return TCL_OK;
+}
+
+static int
CmdProc1(
void *clientData, /* String to return. */
Tcl_Interp *interp, /* Current interpreter. */
@@ -1153,6 +1166,7 @@ CmdProc1(
return TCL_OK;
}
+
static int
CmdProc2(
void *clientData, /* String to return. */
@@ -1165,6 +1179,28 @@ CmdProc2(
}
static void
+CmdDelProc0(
+ void *clientData) /* String to save. */
+{
+ TestCommandTokenRef *thisRefPtr, *prevRefPtr = NULL;
+ TestCommandTokenRef *refPtr = (TestCommandTokenRef *) clientData;
+ int id = refPtr->id;
+ for (thisRefPtr = firstCommandTokenRef; refPtr != NULL;
+ thisRefPtr = thisRefPtr->nextPtr) {
+ if (thisRefPtr->id == id) {
+ if (prevRefPtr != NULL) {
+ prevRefPtr->nextPtr = thisRefPtr->nextPtr;
+ } else {
+ firstCommandTokenRef = thisRefPtr->nextPtr;
+ }
+ break;
+ }
+ prevRefPtr = thisRefPtr;
+ }
+ Tcl_Free(refPtr);
+}
+
+static void
CmdDelProc1(
void *clientData) /* String to save. */
{
@@ -1217,17 +1253,16 @@ TestcmdtokenCmd(
}
if (strcmp(argv[1], "create") == 0) {
refPtr = (TestCommandTokenRef *)Tcl_Alloc(sizeof(TestCommandTokenRef));
- refPtr->token = Tcl_CreateCommand(interp, argv[2], CmdProc1,
- (void *) "original", NULL);
+ refPtr->token = Tcl_CreateCommand(interp, argv[2], CmdProc0,
+ refPtr, CmdDelProc0);
refPtr->id = nextCommandTokenRefId;
+ refPtr->value = "original";
nextCommandTokenRefId++;
refPtr->nextPtr = firstCommandTokenRef;
firstCommandTokenRef = refPtr;
sprintf(buf, "%d", refPtr->id);
Tcl_AppendResult(interp, buf, NULL);
- } else if (strcmp(argv[1], "name") == 0) {
- Tcl_Obj *objPtr;
-
+ } else {
if (sscanf(argv[2], "%d", &id) != 1) {
Tcl_AppendResult(interp, "bad command token \"", argv[2],
"\"", NULL);
@@ -1247,18 +1282,23 @@ TestcmdtokenCmd(
return TCL_ERROR;
}
- objPtr = Tcl_NewObj();
- Tcl_GetCommandFullName(interp, refPtr->token, objPtr);
+ if (strcmp(argv[1], "name") == 0) {
+ Tcl_Obj *objPtr;
- Tcl_AppendElement(interp,
- Tcl_GetCommandName(interp, refPtr->token));
- Tcl_AppendElement(interp, Tcl_GetString(objPtr));
- Tcl_DecrRefCount(objPtr);
- } else {
- Tcl_AppendResult(interp, "bad option \"", argv[1],
- "\": must be create or name", NULL);
- return TCL_ERROR;
+ objPtr = Tcl_NewObj();
+ Tcl_GetCommandFullName(interp, refPtr->token, objPtr);
+
+ Tcl_AppendElement(interp,
+ Tcl_GetCommandName(interp, refPtr->token));
+ Tcl_AppendElement(interp, Tcl_GetString(objPtr));
+ Tcl_DecrRefCount(objPtr);
+ } else {
+ Tcl_AppendResult(interp, "bad option \"", argv[1],
+ "\": must be create, name, or free", NULL);
+ return TCL_ERROR;
+ }
}
+
return TCL_OK;
}
diff --git a/generic/tclTestObj.c b/generic/tclTestObj.c
index 833f39b..820da0e 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", -1));
+ Tcl_NewStringObj("error in mp_init", TCL_INDEX_NONE));
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", -1));
+ Tcl_NewStringObj("error in mp_read_radix", TCL_INDEX_NONE));
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", -1));
+ Tcl_NewStringObj("error in mp_mul_d", TCL_INDEX_NONE));
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", -1));
+ Tcl_NewStringObj("error in mp_div_d", TCL_INDEX_NONE));
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", -1));
+ Tcl_NewStringObj("error in mp_mod_2d", TCL_INDEX_NONE));
return TCL_ERROR;
}
if (!Tcl_IsShared(varPtr[varIndex])) {
@@ -598,7 +598,7 @@ TestindexobjCmd(
}
if (objc < 5) {
- Tcl_AppendToObj(Tcl_GetObjResult(interp), "wrong # args", -1);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), "wrong # args", TCL_INDEX_NONE);
return TCL_ERROR;
}
@@ -738,7 +738,7 @@ TestintobjCmd(
return TCL_ERROR;
}
Tcl_AppendToObj(Tcl_GetObjResult(interp),
- ((wideValue == WIDE_MAX)? "1" : "0"), -1);
+ ((wideValue == WIDE_MAX)? "1" : "0"), TCL_INDEX_NONE);
} 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]), -1);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), Tcl_GetString(varPtr[varIndex]), TCL_INDEX_NONE);
} 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", -1);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), "1", TCL_INDEX_NONE);
#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", -1);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), "1", TCL_INDEX_NONE);
return TCL_OK;
}
- Tcl_AppendToObj(Tcl_GetObjResult(interp), "0", -1);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), "0", TCL_INDEX_NONE);
#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", -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("none", TCL_INDEX_NONE));
}
else {
typeName = objv[2]->typePtr->name;
@@ -1113,7 +1113,7 @@ TestobjCmd(
#ifndef TCL_WIDE_INT_IS_LONG
else if (!strcmp(typeName, "wideInt")) typeName = "int";
#endif
- Tcl_SetObjResult(interp, Tcl_NewStringObj(typeName, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(typeName, TCL_INDEX_NONE));
}
}
return TCL_OK;
@@ -1207,15 +1207,15 @@ TestobjCmd(
goto wrongNumArgs;
}
if (varPtr[varIndex]->typePtr == NULL) { /* a string! */
- Tcl_AppendToObj(Tcl_GetObjResult(interp), "string", -1);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), "string", TCL_INDEX_NONE);
#ifndef TCL_WIDE_INT_IS_LONG
} else if (!strcmp(varPtr[varIndex]->typePtr->name, "wideInt")) {
Tcl_AppendToObj(Tcl_GetObjResult(interp),
- "int", -1);
+ "int", TCL_INDEX_NONE);
#endif
} else {
Tcl_AppendToObj(Tcl_GetObjResult(interp),
- varPtr[varIndex]->typePtr->name, -1);
+ varPtr[varIndex]->typePtr->name, TCL_INDEX_NONE);
}
break;
default:
@@ -1346,7 +1346,7 @@ TeststringobjCmd(
if (CheckIfVarUnset(interp, varPtr, varIndex)) {
return TCL_ERROR;
}
- Tcl_AppendToObj(Tcl_GetObjResult(interp), Tcl_GetString(varPtr[varIndex]), -1);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), Tcl_GetString(varPtr[varIndex]), TCL_INDEX_NONE);
break;
case 4: /* length */
if (objc != 3) {
@@ -1459,7 +1459,7 @@ TeststringobjCmd(
}
if ((length < 0) || ((Tcl_WideUInt)length > (Tcl_WideUInt)size)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "index value out of range", -1));
+ "index value out of range", TCL_INDEX_NONE));
return TCL_ERROR;
}
@@ -1490,7 +1490,7 @@ TeststringobjCmd(
}
if ((length < 0) || ((Tcl_WideUInt)length > (Tcl_WideUInt)size)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "index value out of range", -1));
+ "index value out of range", TCL_INDEX_NONE));
return TCL_ERROR;
}
@@ -1584,7 +1584,7 @@ GetVariableIndex(
}
if (index < 0 || index >= NUMBER_OF_OBJECT_VARS) {
Tcl_ResetResult(interp);
- Tcl_AppendToObj(Tcl_GetObjResult(interp), "bad variable index", -1);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), "bad variable index", TCL_INDEX_NONE);
return TCL_ERROR;
}
@@ -1621,7 +1621,7 @@ CheckIfVarUnset(
sprintf(buf, "variable %" TCL_Z_MODIFIER "u is unset (NULL)", varIndex);
Tcl_ResetResult(interp);
- Tcl_AppendToObj(Tcl_GetObjResult(interp), buf, -1);
+ Tcl_AppendToObj(Tcl_GetObjResult(interp), buf, TCL_INDEX_NONE);
return 1;
}
return 0;
diff --git a/generic/tclTestProcBodyObj.c b/generic/tclTestProcBodyObj.c
index 6d5e6ec..8d92c6e 100644
--- a/generic/tclTestProcBodyObj.c
+++ b/generic/tclTestProcBodyObj.c
@@ -146,7 +146,7 @@ RegisterCommand(
if (cmdTablePtr->exportIt) {
sprintf(buf, "namespace eval %s { namespace export %s }",
namesp, cmdTablePtr->cmdName);
- if (Tcl_EvalEx(interp, buf, -1, 0) != TCL_OK) {
+ if (Tcl_EvalEx(interp, buf, TCL_INDEX_NONE, 0) != TCL_OK) {
return TCL_ERROR;
}
}
diff --git a/generic/tclThreadTest.c b/generic/tclThreadTest.c
index 6f37124..5781329 100644
--- a/generic/tclThreadTest.c
+++ b/generic/tclThreadTest.c
@@ -607,7 +607,7 @@ NewTestThread(
*/
Tcl_Preserve(tsdPtr->interp);
- result = Tcl_EvalEx(tsdPtr->interp, threadEvalScript, -1, 0);
+ result = Tcl_EvalEx(tsdPtr->interp, threadEvalScript, TCL_INDEX_NONE, 0);
if (result != TCL_OK) {
ThreadErrorProc(tsdPtr->interp);
}
@@ -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 ", -1);
- Tcl_WriteChars(errChannel, buf, -1);
+ Tcl_WriteChars(errChannel, "Error from thread ", TCL_INDEX_NONE);
+ Tcl_WriteChars(errChannel, buf, TCL_INDEX_NONE);
Tcl_WriteChars(errChannel, "\n", 1);
- Tcl_WriteChars(errChannel, errorInfo, -1);
+ Tcl_WriteChars(errChannel, errorInfo, TCL_INDEX_NONE);
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, -1) : NULL, 0, flags);
+ (result != NULL) ? Tcl_NewStringObj(result, TCL_INDEX_NONE) : NULL, 0, flags);
}
/*
diff --git a/generic/tclTimer.c b/generic/tclTimer.c
index d49c5c8..3b4741e 100644
--- a/generic/tclTimer.c
+++ b/generic/tclTimer.c
@@ -21,7 +21,7 @@
typedef struct TimerHandler {
Tcl_Time time; /* When timer is to fire. */
Tcl_TimerProc *proc; /* Function to call. */
- ClientData clientData; /* Argument to pass to proc. */
+ void *clientData; /* Argument to pass to proc. */
Tcl_TimerToken token; /* Identifies handler so it can be deleted. */
struct TimerHandler *nextPtr;
/* Next event in queue, or NULL for end of
@@ -73,7 +73,7 @@ typedef struct AfterAssocData {
typedef struct IdleHandler {
Tcl_IdleProc *proc; /* Function to call. */
- ClientData clientData; /* Value to pass to proc. */
+ void *clientData; /* Value to pass to proc. */
int generation; /* Used to distinguish older handlers from
* recently-created ones. */
struct IdleHandler *nextPtr;/* Next in list of active handlers. */
@@ -150,18 +150,18 @@ static Tcl_ThreadDataKey dataKey;
* Prototypes for functions referenced only in this file:
*/
-static void AfterCleanupProc(ClientData clientData,
+static void AfterCleanupProc(void *clientData,
Tcl_Interp *interp);
static int AfterDelay(Tcl_Interp *interp, Tcl_WideInt ms);
-static void AfterProc(ClientData clientData);
+static void AfterProc(void *clientData);
static void FreeAfterPtr(AfterInfo *afterPtr);
static AfterInfo * GetAfterEvent(AfterAssocData *assocPtr,
Tcl_Obj *commandPtr);
static ThreadSpecificData *InitTimer(void);
-static void TimerExitProc(ClientData clientData);
+static void TimerExitProc(void *clientData);
static int TimerHandlerEventProc(Tcl_Event *evPtr, int flags);
-static void TimerCheckProc(ClientData clientData, int flags);
-static void TimerSetupProc(ClientData clientData, int flags);
+static void TimerCheckProc(void *clientData, int flags);
+static void TimerSetupProc(void *clientData, int flags);
/*
*----------------------------------------------------------------------
@@ -251,7 +251,7 @@ Tcl_CreateTimerHandler(
int milliseconds, /* How many milliseconds to wait before
* invoking proc. */
Tcl_TimerProc *proc, /* Function to invoke. */
- ClientData clientData) /* Arbitrary data to pass to proc. */
+ void *clientData) /* Arbitrary data to pass to proc. */
{
Tcl_Time time;
@@ -292,7 +292,7 @@ Tcl_TimerToken
TclCreateAbsoluteTimerHandler(
Tcl_Time *timePtr,
Tcl_TimerProc *proc,
- ClientData clientData)
+ void *clientData)
{
TimerHandler *timerHandlerPtr, *tPtr2, *prevPtr;
ThreadSpecificData *tsdPtr = InitTimer();
@@ -619,7 +619,7 @@ TimerHandlerEventProc(
void
Tcl_DoWhenIdle(
Tcl_IdleProc *proc, /* Function to invoke. */
- ClientData clientData) /* Arbitrary value to pass to proc. */
+ void *clientData) /* Arbitrary value to pass to proc. */
{
IdleHandler *idlePtr;
Tcl_Time blockTime;
@@ -663,7 +663,7 @@ Tcl_DoWhenIdle(
void
Tcl_CancelIdleCall(
Tcl_IdleProc *proc, /* Function that was previously registered. */
- ClientData clientData) /* Arbitrary value to pass to proc. */
+ void *clientData) /* Arbitrary value to pass to proc. */
{
IdleHandler *idlePtr, *prevPtr;
IdleHandler *nextPtr;
@@ -974,7 +974,7 @@ Tcl_AfterObjCmd(
Tcl_ListObjAppendElement(interp, resultListPtr,
afterPtr->commandPtr);
Tcl_ListObjAppendElement(interp, resultListPtr, Tcl_NewStringObj(
- (afterPtr->token == NULL) ? "idle" : "timer", -1));
+ (afterPtr->token == NULL) ? "idle" : "timer", TCL_INDEX_NONE));
Tcl_SetObjResult(interp, resultListPtr);
}
break;
@@ -1149,7 +1149,7 @@ GetAfterEvent(
static void
AfterProc(
- ClientData clientData) /* Describes command to execute. */
+ void *clientData) /* Describes command to execute. */
{
AfterInfo *afterPtr = (AfterInfo *)clientData;
AfterAssocData *assocPtr = afterPtr->assocPtr;
@@ -1251,7 +1251,7 @@ FreeAfterPtr(
static void
AfterCleanupProc(
- ClientData clientData, /* Points to AfterAssocData for the
+ void *clientData, /* Points to AfterAssocData for the
* interpreter. */
TCL_UNUSED(Tcl_Interp *))
{
diff --git a/generic/tclVar.c b/generic/tclVar.c
index f7ec7c8..bc94e73 100644
--- a/generic/tclVar.c
+++ b/generic/tclVar.c
@@ -301,7 +301,7 @@ TclVarHashCreateVar(
Tcl_Obj *keyPtr;
Var *varPtr;
- keyPtr = Tcl_NewStringObj(key, -1);
+ keyPtr = Tcl_NewStringObj(key, TCL_INDEX_NONE);
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, -1);
+ Tcl_Obj *part1Ptr = Tcl_NewStringObj(part1, TCL_INDEX_NONE);
if (createPart1) {
Tcl_IncrRefCount(part1Ptr);
@@ -551,7 +551,7 @@ TclObjLookupVar(
Var *resPtr;
if (part2) {
- part2Ptr = Tcl_NewStringObj(part2, -1);
+ part2Ptr = Tcl_NewStringObj(part2, TCL_INDEX_NONE);
if (createPart2) {
Tcl_IncrRefCount(part2Ptr);
}
@@ -949,7 +949,7 @@ TclLookupSimpleVar(
return NULL;
}
if (tail != varName) {
- tailPtr = Tcl_NewStringObj(tail, -1);
+ tailPtr = Tcl_NewStringObj(tail, TCL_INDEX_NONE);
} else {
tailPtr = varNamePtr;
}
@@ -1173,10 +1173,10 @@ Tcl_GetVar2(
* bits. */
{
Tcl_Obj *resultPtr;
- Tcl_Obj *part2Ptr = NULL, *part1Ptr = Tcl_NewStringObj(part1, -1);
+ Tcl_Obj *part2Ptr = NULL, *part1Ptr = Tcl_NewStringObj(part1, TCL_INDEX_NONE);
if (part2) {
- part2Ptr = Tcl_NewStringObj(part2, -1);
+ part2Ptr = Tcl_NewStringObj(part2, TCL_INDEX_NONE);
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, -1);
+ Tcl_Obj *resPtr, *part2Ptr = NULL, *part1Ptr = Tcl_NewStringObj(part1, TCL_INDEX_NONE);
if (part2) {
- part2Ptr = Tcl_NewStringObj(part2, -1);
+ part2Ptr = Tcl_NewStringObj(part2, TCL_INDEX_NONE);
Tcl_IncrRefCount(part2Ptr);
}
@@ -1547,7 +1547,7 @@ Tcl_SetVar2(
* TCL_LEAVE_ERR_MSG. */
{
Tcl_Obj *varValuePtr = Tcl_SetVar2Ex(interp, part1, part2,
- Tcl_NewStringObj(newValue, -1), flags);
+ Tcl_NewStringObj(newValue, TCL_INDEX_NONE), 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, -1);
+ Tcl_Obj *resPtr, *part2Ptr = NULL, *part1Ptr = Tcl_NewStringObj(part1, TCL_INDEX_NONE);
Tcl_IncrRefCount(part1Ptr);
if (part2) {
- part2Ptr = Tcl_NewStringObj(part2, -1);
+ part2Ptr = Tcl_NewStringObj(part2, TCL_INDEX_NONE);
Tcl_IncrRefCount(part2Ptr);
}
@@ -2291,10 +2291,10 @@ Tcl_UnsetVar2(
* TCL_LEAVE_ERR_MSG. */
{
int result;
- Tcl_Obj *part2Ptr = NULL, *part1Ptr = Tcl_NewStringObj(part1, -1);
+ Tcl_Obj *part2Ptr = NULL, *part1Ptr = Tcl_NewStringObj(part1, TCL_INDEX_NONE);
if (part2) {
- part2Ptr = Tcl_NewStringObj(part2, -1);
+ part2Ptr = Tcl_NewStringObj(part2, TCL_INDEX_NONE);
}
/*
@@ -3070,7 +3070,7 @@ ArrayForNRCmd(
if (numVars != 2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "must have two variable names", -1));
+ "must have two variable names", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "SYNTAX", "array", "for", NULL);
return TCL_ERROR;
}
@@ -3168,7 +3168,7 @@ ArrayForLoopCallback(
Tcl_ResetResult(interp);
if (done == TCL_ERROR) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "array changed during iteration", -1));
+ "array changed during iteration", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "READ", "array", "for", NULL);
varPtr->flags |= TCL_LEAVE_ERR_MSG;
result = done;
@@ -4048,7 +4048,7 @@ ArraySetCmd(
}
if (elemLen & 1) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "list must have an even number of elements", -1));
+ "list must have an even number of elements", TCL_INDEX_NONE));
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", -1));
+ "error reading array statistics", TCL_INDEX_NONE));
return TCL_ERROR;
}
- Tcl_SetObjResult(interp, Tcl_NewStringObj(stats, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(stats, TCL_INDEX_NONE));
Tcl_Free(stats);
return TCL_OK;
}
diff --git a/generic/tclZipfs.c b/generic/tclZipfs.c
index f284704..1653dbe 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, -1)); \
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(errstr, TCL_INDEX_NONE)); \
} \
} while (0)
#define ZIPFS_MEM_ERROR(interp) \
do { \
if (interp) { \
Tcl_SetObjResult(interp, Tcl_NewStringObj( \
- "out of memory", -1)); \
+ "out of memory", TCL_INDEX_NONE)); \
Tcl_SetErrorCode(interp, "TCL", "MALLOC", NULL); \
} \
} while (0)
@@ -1708,8 +1708,8 @@ ZipFSCatalogFilesystem(
Tcl_DString ds2;
Tcl_DStringInit(&ds2);
- Tcl_DStringAppend(&ds2, "assets/.root/", -1);
- Tcl_DStringAppend(&ds2, path, -1);
+ Tcl_DStringAppend(&ds2, "assets/.root/", TCL_INDEX_NONE);
+ Tcl_DStringAppend(&ds2, path, TCL_INDEX_NONE);
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, -1);
+ Tcl_DStringAppend(&ds, z->name, TCL_INDEX_NONE);
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, -1));
+ zf->mountPoint, TCL_INDEX_NONE));
Tcl_ListObjAppendElement(NULL, resultList, Tcl_NewStringObj(
- zf->name, -1));
+ zf->name, TCL_INDEX_NONE));
}
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, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(zf->name, TCL_INDEX_NONE));
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", -1));
+ "could not normalize zip filename", TCL_INDEX_NONE));
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, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(ZIPFS_VOLUME, TCL_INDEX_NONE));
return TCL_OK;
}
@@ -2451,7 +2451,7 @@ RandomChar(
double r;
Tcl_Obj *ret;
- if (Tcl_EvalEx(interp, "::tcl::mathfunc::rand", -1, 0) != TCL_OK) {
+ if (Tcl_EvalEx(interp, "::tcl::mathfunc::rand", TCL_INDEX_NONE, 0) != TCL_OK) {
goto failed;
}
ret = Tcl_GetObjResult(interp);
@@ -2540,7 +2540,7 @@ ZipAddFile(
* crazy enough to embed NULs in filenames, they deserve what they get!
*/
- zpathExt = Tcl_UtfToExternalDString(ZipFS.utf8, zpathTcl, -1, &zpathDs);
+ zpathExt = Tcl_UtfToExternalDString(ZipFS.utf8, zpathTcl, TCL_INDEX_NONE, &zpathDs);
zpathlen = strlen(zpathExt);
if (zpathlen + ZIP_CENTRAL_HEADER_LEN > bufsize) {
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
@@ -2880,7 +2880,7 @@ ZipFSFind(
Tcl_Obj *cmd[2];
int result;
- cmd[0] = Tcl_NewStringObj("::tcl::zipfs::find", -1);
+ cmd[0] = Tcl_NewStringObj("::tcl::zipfs::find", TCL_INDEX_NONE);
cmd[1] = dirRoot;
Tcl_IncrRefCount(cmd[0]);
result = Tcl_EvalObjv(interp, 2, cmd, 0);
@@ -3208,7 +3208,7 @@ ZipFSMkZipOrImg(
}
z = (ZipEntry *) Tcl_GetHashValue(hPtr);
- name = Tcl_UtfToExternalDString(ZipFS.utf8, z->name, -1, &ds);
+ name = Tcl_UtfToExternalDString(ZipFS.utf8, z->name, TCL_INDEX_NONE, &ds);
len = Tcl_DStringLength(&ds);
SerializeCentralDirectoryEntry(start, end, (unsigned char *) buf,
z, len);
@@ -3628,7 +3628,7 @@ ZipFSCanonicalObjCmd(
filename = TclGetString(objv[2]);
result = CanonicalPath(mntpoint, filename, &dPath, zipfs);
}
- Tcl_SetObjResult(interp, Tcl_NewStringObj(result, -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(result, TCL_INDEX_NONE));
return TCL_OK;
}
@@ -3673,7 +3673,7 @@ ZipFSExistsObjCmd(
filename = TclGetString(objv[1]);
Tcl_DStringInit(&ds);
Tcl_DStringAppend(&ds, ZIPFS_VOLUME, ZIPFS_VOLUME_LEN - 1);
- Tcl_DStringAppend(&ds, filename, -1);
+ Tcl_DStringAppend(&ds, filename, TCL_INDEX_NONE);
filename = Tcl_DStringValue(&ds);
ReadLock();
@@ -3724,7 +3724,7 @@ ZipFSInfoObjCmd(
Tcl_Obj *result = Tcl_GetObjResult(interp);
Tcl_ListObjAppendElement(interp, result,
- Tcl_NewStringObj(z->zipFilePtr->name, -1));
+ Tcl_NewStringObj(z->zipFilePtr->name, TCL_INDEX_NONE));
Tcl_ListObjAppendElement(interp, result,
Tcl_NewWideIntObj(z->numBytes));
Tcl_ListObjAppendElement(interp, result,
@@ -3810,7 +3810,7 @@ ZipFSListObjCmd(
if (Tcl_StringMatch(z->name, pattern)) {
Tcl_ListObjAppendElement(interp, result,
- Tcl_NewStringObj(z->name, -1));
+ Tcl_NewStringObj(z->name, TCL_INDEX_NONE));
}
}
} else if (regexp) {
@@ -3820,7 +3820,7 @@ ZipFSListObjCmd(
if (Tcl_RegExpExec(interp, regexp, z->name, z->name)) {
Tcl_ListObjAppendElement(interp, result,
- Tcl_NewStringObj(z->name, -1));
+ Tcl_NewStringObj(z->name, TCL_INDEX_NONE));
}
}
} else {
@@ -3829,7 +3829,7 @@ ZipFSListObjCmd(
ZipEntry *z = (ZipEntry *) Tcl_GetHashValue(hPtr);
Tcl_ListObjAppendElement(interp, result,
- Tcl_NewStringObj(z->name, -1));
+ Tcl_NewStringObj(z->name, TCL_INDEX_NONE));
}
}
Unlock();
@@ -3873,7 +3873,7 @@ TclZipfs_TclLibrary(void)
*/
if (zipfs_literal_tcl_library) {
- return Tcl_NewStringObj(zipfs_literal_tcl_library, -1);
+ return Tcl_NewStringObj(zipfs_literal_tcl_library, TCL_INDEX_NONE);
}
/*
@@ -3887,7 +3887,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, -1);
+ return Tcl_NewStringObj(zipfs_literal_tcl_library, TCL_INDEX_NONE);
}
/*
@@ -3906,17 +3906,17 @@ TclZipfs_TclLibrary(void)
#endif
if (ZipfsAppHookFindTclInit(dllName) == TCL_OK) {
- return Tcl_NewStringObj(zipfs_literal_tcl_library, -1);
+ return Tcl_NewStringObj(zipfs_literal_tcl_library, TCL_INDEX_NONE);
}
#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, -1);
+ return Tcl_NewStringObj(zipfs_literal_tcl_library, TCL_INDEX_NONE);
}
#else
if (ZipfsAppHookFindTclInit(CFG_RUNTIME_LIBDIR "/" CFG_RUNTIME_DLLFILE) == TCL_OK) {
- return Tcl_NewStringObj(zipfs_literal_tcl_library, -1);
+ return Tcl_NewStringObj(zipfs_literal_tcl_library, TCL_INDEX_NONE);
}
#endif /* _WIN32 */
#endif /* !defined(STATIC_BUILD) */
@@ -3927,7 +3927,7 @@ TclZipfs_TclLibrary(void)
*/
if (zipfs_literal_tcl_library) {
- return Tcl_NewStringObj(zipfs_literal_tcl_library, -1);
+ return Tcl_NewStringObj(zipfs_literal_tcl_library, TCL_INDEX_NONE);
}
return NULL;
}
@@ -4936,7 +4936,7 @@ static Tcl_Obj *
ZipFSFilesystemSeparatorProc(
TCL_UNUSED(Tcl_Obj *) /*pathPtr*/)
{
- return Tcl_NewStringObj("/", -1);
+ return Tcl_NewStringObj("/", TCL_INDEX_NONE);
}
/*
@@ -4956,11 +4956,11 @@ AppendWithPrefix(
Tcl_DString *prefix, /* The prefix to add to the element, or NULL
* for don't do that. */
const char *name, /* The name to append. */
- int nameLen) /* The length of the name. May be -1 for
+ size_t nameLen) /* The length of the name. May be TCL_INDEX_NONE for
* append-up-to-NUL-byte. */
{
if (prefix) {
- int prefixLength = Tcl_DStringLength(prefix);
+ size_t prefixLength = Tcl_DStringLength(prefix);
Tcl_DStringAppend(prefix, name, nameLen);
Tcl_ListObjAppendElement(NULL, result, Tcl_NewStringObj(
@@ -5063,7 +5063,7 @@ ZipFSMatchInDirectoryProc(
if (z && ((dirOnly < 0) || (!dirOnly && !z->isDirectory)
|| (dirOnly && z->isDirectory))) {
- AppendWithPrefix(result, prefixBuf, z->name, -1);
+ AppendWithPrefix(result, prefixBuf, z->name, TCL_INDEX_NONE);
}
goto end;
}
@@ -5096,7 +5096,7 @@ ZipFSMatchInDirectoryProc(
continue;
}
if ((z->depth == scnt) && Tcl_StringCaseMatch(z->name, pat, 0)) {
- AppendWithPrefix(result, prefixBuf, z->name + strip, -1);
+ AppendWithPrefix(result, prefixBuf, z->name + strip, TCL_INDEX_NONE);
}
}
Tcl_Free(pat);
@@ -5286,7 +5286,7 @@ ZipFSPathInFilesystemProc(
static Tcl_Obj *
ZipFSListVolumesProc(void)
{
- return Tcl_NewStringObj(ZIPFS_VOLUME, -1);
+ return Tcl_NewStringObj(ZIPFS_VOLUME, TCL_INDEX_NONE);
}
/*
@@ -5400,10 +5400,10 @@ ZipFSFileAttrsGetProc(
z->zipFilePtr->mountPointLen);
break;
case ZIP_ATTR_ARCHIVE:
- *objPtrRef = Tcl_NewStringObj(z->zipFilePtr->name, -1);
+ *objPtrRef = Tcl_NewStringObj(z->zipFilePtr->name, TCL_INDEX_NONE);
break;
case ZIP_ATTR_PERMISSIONS:
- *objPtrRef = Tcl_NewStringObj("0o555", -1);
+ *objPtrRef = Tcl_NewStringObj("0o555", TCL_INDEX_NONE);
break;
case ZIP_ATTR_CRC:
TclNewIntObj(*objPtrRef, z->crc32);
@@ -5464,7 +5464,7 @@ static Tcl_Obj *
ZipFSFilesystemPathTypeProc(
TCL_UNUSED(Tcl_Obj *) /*pathPtr*/)
{
- return Tcl_NewStringObj("zip", -1);
+ return Tcl_NewStringObj("zip", TCL_INDEX_NONE);
}
/*
@@ -5661,7 +5661,7 @@ TclZipfs_Init(
Tcl_Command ensemble;
Tcl_Obj *mapObj;
- Tcl_EvalEx(interp, findproc, -1, TCL_EVAL_GLOBAL);
+ Tcl_EvalEx(interp, findproc, TCL_INDEX_NONE, TCL_EVAL_GLOBAL);
if (!Tcl_IsSafe(interp)) {
Tcl_LinkVar(interp, "::tcl::zipfs::wrmax", (char *) &ZipFS.wrmax,
TCL_LINK_INT);
@@ -5676,8 +5676,8 @@ TclZipfs_Init(
*/
Tcl_GetEnsembleMappingDict(NULL, ensemble, &mapObj);
- Tcl_DictObjPut(NULL, mapObj, Tcl_NewStringObj("find", -1),
- Tcl_NewStringObj("::tcl::zipfs::find", -1));
+ Tcl_DictObjPut(NULL, mapObj, Tcl_NewStringObj("find", TCL_INDEX_NONE),
+ Tcl_NewStringObj("::tcl::zipfs::find", TCL_INDEX_NONE));
Tcl_CreateObjCommand(interp, "::tcl::zipfs::tcl_library_init",
ZipFSTclLibraryObjCmd, NULL, NULL);
Tcl_PkgProvide(interp, "tcl::zipfs", "2.0");
@@ -5859,7 +5859,7 @@ TclZipfs_AppHook(
Tcl_DString ds;
Tcl_DStringInit(&ds);
- archive = Tcl_WCharToUtfDString((*argvPtr)[1], -1, &ds);
+ archive = Tcl_WCharToUtfDString((*argvPtr)[1], TCL_INDEX_NONE, &ds);
#else /* !_WIN32 */
archive = (*argvPtr)[1];
#endif /* _WIN32 */
diff --git a/generic/tclZlib.c b/generic/tclZlib.c
index 9396060..9f63d99 100644
--- a/generic/tclZlib.c
+++ b/generic/tclZlib.c
@@ -313,7 +313,7 @@ ConvertError(
sprintf(codeStrBuf, "%d", code);
break;
}
- Tcl_SetObjResult(interp, Tcl_NewStringObj(zError(code), -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(zError(code), TCL_INDEX_NONE));
/*
* 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(), -1);
+ objv[3] = Tcl_NewStringObj(Tcl_ErrnoId(), TCL_INDEX_NONE);
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, -1);
+ Tcl_Obj *name = Tcl_NewStringObj(nameStr, TCL_INDEX_NONE);
int result = Tcl_DictObjGet(interp, dictObj, name, valuePtrPtr);
TclDecrRefCount(name);
@@ -450,12 +450,16 @@ GenerateHeader(
headerPtr->nativeCommentBuf, MAX_COMMENT_LEN-1, NULL, &len,
NULL);
if (result != TCL_OK) {
- if (result == TCL_CONVERT_UNKNOWN) {
- Tcl_AppendResult(interp, "Comment contains characters > 0xFF", NULL);
- } else {
- Tcl_AppendResult(interp, "Comment too large for zip", NULL);
+ if (interp) {
+ if (result == TCL_CONVERT_UNKNOWN) {
+ Tcl_AppendResult(
+ interp, "Comment contains characters > 0xFF", NULL);
+ }
+ else {
+ Tcl_AppendResult(interp, "Comment too large for zip", NULL);
+ }
}
- result = TCL_ERROR;
+ result = TCL_ERROR; /* TCL_CONVERT_* -> TCL_ERROR*/
goto error;
}
headerPtr->nativeCommentBuf[len] = '\0';
@@ -482,12 +486,17 @@ GenerateHeader(
headerPtr->nativeFilenameBuf, MAXPATHLEN-1, NULL, &len,
NULL);
if (result != TCL_OK) {
- if (result == TCL_CONVERT_UNKNOWN) {
- Tcl_AppendResult(interp, "Filename contains characters > 0xFF", NULL);
- } else {
- Tcl_AppendResult(interp, "Filename too large for zip", NULL);
+ if (interp) {
+ if (result == TCL_CONVERT_UNKNOWN) {
+ Tcl_AppendResult(
+ interp, "Filename contains characters > 0xFF", NULL);
+ }
+ else {
+ Tcl_AppendResult(
+ interp, "Filename too large for zip", NULL);
+ }
}
- result = TCL_ERROR;
+ result = TCL_ERROR; /* TCL_CONVERT_* -> TCL_ERROR*/
goto error;
}
headerPtr->nativeFilenameBuf[len] = '\0';
@@ -548,7 +557,7 @@ GenerateHeader(
*/
#define SetValue(dictObj, key, value) \
- Tcl_DictObjPut(NULL, (dictObj), Tcl_NewStringObj((key), -1), (value))
+ Tcl_DictObjPut(NULL, (dictObj), Tcl_NewStringObj((key), TCL_INDEX_NONE), (value))
static void
ExtractHeader(
@@ -570,7 +579,7 @@ ExtractHeader(
}
}
- (void)Tcl_ExternalToUtfDString(latin1enc, (char *) headerPtr->comment, -1,
+ (void)Tcl_ExternalToUtfDString(latin1enc, (char *) headerPtr->comment, TCL_INDEX_NONE,
&tmp);
SetValue(dictObj, "comment", Tcl_DStringToObj(&tmp));
}
@@ -587,7 +596,7 @@ ExtractHeader(
}
}
- (void)Tcl_ExternalToUtfDString(latin1enc, (char *) headerPtr->name, -1,
+ (void)Tcl_ExternalToUtfDString(latin1enc, (char *) headerPtr->name, TCL_INDEX_NONE,
&tmp);
SetValue(dictObj, "filename", Tcl_DStringToObj(&tmp));
}
@@ -599,7 +608,7 @@ ExtractHeader(
}
if (headerPtr->text != Z_UNKNOWN) {
SetValue(dictObj, "type",
- Tcl_NewStringObj(headerPtr->text ? "text" : "binary", -1));
+ Tcl_NewStringObj(headerPtr->text ? "text" : "binary", TCL_INDEX_NONE));
}
if (latin1enc != NULL) {
@@ -833,7 +842,7 @@ Tcl_ZlibStreamInit(
*/
if (interp != NULL) {
- if (Tcl_EvalEx(interp, "::incr ::tcl::zlib::cmdcounter", -1, 0) != TCL_OK) {
+ if (Tcl_EvalEx(interp, "::incr ::tcl::zlib::cmdcounter", TCL_INDEX_NONE, 0) != TCL_OK) {
goto error;
}
Tcl_DStringInit(&cmdname);
@@ -842,7 +851,7 @@ Tcl_ZlibStreamInit(
if (Tcl_FindCommand(interp, Tcl_DStringValue(&cmdname),
NULL, 0) != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "BUG: Stream command name already exists", -1));
+ "BUG: Stream command name already exists", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "BUG", "EXISTING_CMD", NULL);
Tcl_DStringFree(&cmdname);
goto error;
@@ -1233,7 +1242,7 @@ Tcl_ZlibStreamPut(
if (zshPtr->streamEnd) {
if (zshPtr->interp) {
Tcl_SetObjResult(zshPtr->interp, Tcl_NewStringObj(
- "already past compressed stream end", -1));
+ "already past compressed stream end", TCL_INDEX_NONE));
Tcl_SetErrorCode(zshPtr->interp, "TCL", "ZIP", "CLOSED", NULL);
}
return TCL_ERROR;
@@ -1464,7 +1473,7 @@ Tcl_ZlibStreamGet(
if (zshPtr->interp) {
Tcl_SetObjResult(zshPtr->interp, Tcl_NewStringObj(
"unexpected zlib internal state during"
- " decompression", -1));
+ " decompression", TCL_INDEX_NONE));
Tcl_SetErrorCode(zshPtr->interp, "TCL", "ZIP", "STATE",
NULL);
}
@@ -2229,7 +2238,7 @@ ZlibCmd(
return TCL_ERROR;
badLevel:
- Tcl_SetObjResult(interp, Tcl_NewStringObj("level must be 0 to 9", -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("level must be 0 to 9", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "VALUE", "COMPRESSIONLEVEL", NULL);
if (extraInfoStr) {
Tcl_AddErrorInfo(interp, extraInfoStr);
@@ -2492,13 +2501,13 @@ ZlibPushSubcmd(
if (mode == TCL_ZLIB_STREAM_DEFLATE && !(chanMode & TCL_WRITABLE)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "compression may only be applied to writable channels", -1));
+ "compression may only be applied to writable channels", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "ZIP", "UNWRITABLE", NULL);
return TCL_ERROR;
}
if (mode == TCL_ZLIB_STREAM_INFLATE && !(chanMode & TCL_READABLE)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "decompression may only be applied to readable channels",-1));
+ "decompression may only be applied to readable channels",TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "ZIP", "UNREADABLE", NULL);
return TCL_ERROR;
}
@@ -2532,7 +2541,7 @@ ZlibPushSubcmd(
}
if (level < 0 || level > 9) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "level must be 0 to 9", -1));
+ "level must be 0 to 9", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "VALUE", "COMPRESSIONLEVEL",
NULL);
goto genericOptionError;
@@ -2554,7 +2563,7 @@ ZlibPushSubcmd(
if (format == TCL_ZLIB_FORMAT_GZIP) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"a compression dictionary may not be set in the "
- "gzip format", -1));
+ "gzip format", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "ZIP", "BADOPT", NULL);
goto genericOptionError;
}
@@ -2766,7 +2775,7 @@ ZlibStreamAddCmd(
if (i == objc-2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"\"-buffer\" option must be followed by integer "
- "decompression buffersize", -1));
+ "decompression buffersize", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "ZIP", "NOVAL", NULL);
return TCL_ERROR;
}
@@ -2785,7 +2794,7 @@ ZlibStreamAddCmd(
if (i == objc-2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"\"-dictionary\" option must be followed by"
- " compression dictionary bytes", -1));
+ " compression dictionary bytes", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "ZIP", "NOVAL", NULL);
return TCL_ERROR;
}
@@ -2796,7 +2805,7 @@ ZlibStreamAddCmd(
if (flush == -2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"\"-flush\", \"-fullflush\" and \"-finalize\" options"
- " are mutually exclusive", -1));
+ " are mutually exclusive", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "ZIP", "EXCLUSIVE", NULL);
return TCL_ERROR;
}
@@ -2893,7 +2902,7 @@ ZlibStreamPutCmd(
if (i == objc-2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"\"-dictionary\" option must be followed by"
- " compression dictionary bytes", -1));
+ " compression dictionary bytes", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "ZIP", "NOVAL", NULL);
return TCL_ERROR;
}
@@ -2903,7 +2912,7 @@ ZlibStreamPutCmd(
if (flush == -2) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"\"-flush\", \"-fullflush\" and \"-finalize\" options"
- " are mutually exclusive", -1));
+ " are mutually exclusive", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "ZIP", "EXCLUSIVE", NULL);
return TCL_ERROR;
}
@@ -2951,7 +2960,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", -1));
+ "only gunzip streams can produce header information", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "ZIP", "BADOP", NULL);
return TCL_ERROR;
}
@@ -3265,7 +3274,7 @@ ZlibTransformOutput(
Tcl_ListObjAppendElement(NULL, errObj,
ConvertErrorToList(e, cd->outStream.adler));
Tcl_ListObjAppendElement(NULL, errObj,
- Tcl_NewStringObj(cd->outStream.msg, -1));
+ Tcl_NewStringObj(cd->outStream.msg, TCL_INDEX_NONE));
Tcl_SetChannelError(cd->parent, errObj);
*errorCodePtr = EINVAL;
return -1;
@@ -3415,7 +3424,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", -1));
+ "-limit must be between 1 and 65536", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "VALUE", "READLIMIT", NULL);
return TCL_ERROR;
}
@@ -3489,7 +3498,7 @@ ZlibTransformGetOption(
Tcl_DStringAppendElement(dsPtr, "-checksum");
Tcl_DStringAppendElement(dsPtr, buf);
} else {
- Tcl_DStringAppend(dsPtr, buf, -1);
+ Tcl_DStringAppend(dsPtr, buf, TCL_INDEX_NONE);
return TCL_OK;
}
}
@@ -3815,7 +3824,7 @@ ZlibStackChannelTransform(
}
cd->chan = chan;
cd->parent = Tcl_GetStackedChannel(chan);
- Tcl_SetObjResult(interp, Tcl_NewStringObj(Tcl_GetChannelName(chan), -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(Tcl_GetChannelName(chan), TCL_INDEX_NONE));
return chan;
error:
@@ -3945,7 +3954,7 @@ ResultDecompress(
Tcl_ListObjAppendElement(NULL, errObj,
ConvertErrorToList(e, cd->inStream.adler));
Tcl_ListObjAppendElement(NULL, errObj,
- Tcl_NewStringObj(cd->inStream.msg, -1));
+ Tcl_NewStringObj(cd->inStream.msg, TCL_INDEX_NONE));
Tcl_SetChannelError(cd->parent, errObj);
*errorCodePtr = EINVAL;
return -1;
@@ -3969,7 +3978,7 @@ TclZlibInit(
* commands.
*/
- Tcl_EvalEx(interp, "namespace eval ::tcl::zlib {variable cmdcounter 0}", -1, 0);
+ Tcl_EvalEx(interp, "namespace eval ::tcl::zlib {variable cmdcounter 0}", TCL_INDEX_NONE, 0);
/*
* Create the public scripted interface to this file's functionality.
@@ -4020,7 +4029,7 @@ Tcl_ZlibStreamInit(
Tcl_ZlibStream *zshandle)
{
if (interp) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj("unimplemented", -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("unimplemented", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "UNIMPLEMENTED", NULL);
}
return TCL_ERROR;
@@ -4088,7 +4097,7 @@ Tcl_ZlibDeflate(
Tcl_Obj *gzipHeaderDictObj)
{
if (interp) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj("unimplemented", -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("unimplemented", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "UNIMPLEMENTED", NULL);
}
return TCL_ERROR;
@@ -4103,7 +4112,7 @@ Tcl_ZlibInflate(
Tcl_Obj *gzipHeaderDictObj)
{
if (interp) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj("unimplemented", -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("unimplemented", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "UNIMPLEMENTED", NULL);
}
return TCL_ERROR;
diff --git a/macosx/tclMacOSXFCmd.c b/macosx/tclMacOSXFCmd.c
index e24c555..78fa45c 100644
--- a/macosx/tclMacOSXFCmd.c
+++ b/macosx/tclMacOSXFCmd.c
@@ -203,7 +203,7 @@ TclMacOSXGetFileAttribute(
return TCL_OK;
#else
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "Mac OS X file attributes not supported", -1));
+ "Mac OS X file attributes not supported", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "UNSUPPORTED", NULL);
return TCL_ERROR;
#endif /* HAVE_GETATTRLIST */
@@ -335,7 +335,7 @@ TclMacOSXSetFileAttribute(
if (newRsrcForkSize != 0) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "setting nonzero rsrclength not supported", -1));
+ "setting nonzero rsrclength not supported", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "UNSUPPORTED", NULL);
return TCL_ERROR;
}
@@ -376,7 +376,7 @@ TclMacOSXSetFileAttribute(
return TCL_OK;
#else
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "Mac OS X file attributes not supported", -1));
+ "Mac OS X file attributes not supported", TCL_INDEX_NONE));
Tcl_SetErrorCode(interp, "TCL", "UNSUPPORTED", NULL);
return TCL_ERROR;
#endif
diff --git a/tests/basic.test b/tests/basic.test
index f4c57fe..c90d80e 100644
--- a/tests/basic.test
+++ b/tests/basic.test
@@ -348,7 +348,7 @@ test basic-20.2 {Tcl_GetCommandInfo, names for commands created outside namespac
test basic-20.3 {Tcl_GetCommandInfo, #-quoting} testcmdtoken {
catch {rename \# ""}
set x [testcmdtoken create \#]
- testcmdtoken name $x
+ return [testcmdtoken name $x]
} {{#} ::#}
test basic-21.1 {Tcl_GetCommandName} {emptyTest} {
diff --git a/tests/fCmd.test b/tests/fCmd.test
index d656b3d..d60e58c 100644
--- a/tests/fCmd.test
+++ b/tests/fCmd.test
@@ -27,7 +27,7 @@ testConstraint winLessThan10 0
testConstraint notNetworkFilesystem 0
testConstraint reg 0
if {[testConstraint win]} {
- catch {
+ if {[catch {
# Is the registry extension already static to this shell?
try {
load {} Registry
@@ -38,8 +38,11 @@ if {[testConstraint win]} {
load $::reglib Registry
}
testConstraint reg 1
+ } regError]} {
+ catch {package require registry; testConstraint reg 1}
}
}
+
testConstraint notInCIenv [expr {![info exists ::env(CI)] || !$::env(CI)}]
# File permissions broken on wsl without some "exotic" wsl configuration
@@ -108,6 +111,45 @@ if {[testConstraint win]} {
}
}
+# Try getting a lower case glob pattern that will match the home directory of
+# a given user to test ~user and [file tildeexpand ~user]. Note this may not
+# be the same as ~ even when "user" is current user. For example, on Unix
+# platforms ~ will return HOME envvar, but ~user will lookup password file
+# bypassing HOME. If home directory not found, returns *$user* so caller can
+# succeed by using glob matching under the hope that the path contains
+# the user name.
+proc gethomedirglob {user} {
+ if {[testConstraint unix]} {
+ if {![catch {
+ exec {*}[auto_execok sh] -c "echo ~$user"
+ } home]} {
+ set home [string trim $home]
+ if {$home ne ""} {
+ # Expect exact match (except case), no glob * added
+ return [string tolower $home]
+ }
+ }
+ } elseif {[testConstraint reg]} {
+ # Windows with registry extension loaded
+ if {![catch {
+ set sid [exec {*}[auto_execok powershell] -Command "(Get-LocalUser -Name '$user')\[0\].sid.Value"]
+ set sid [string trim $sid]
+ # Get path from the Windows registry
+ set home [registry get "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList\\$sid" ProfileImagePath]
+ set home [string trim $home]
+ } result]} {
+ if {$home ne ""} {
+ # file join for \ -> /
+ return [file join [string tolower $home]]
+ }
+ }
+ }
+
+ # Caller will need to use glob matching and hope user
+ # name is in the home directory path
+ return *$user*
+}
+
proc createfile {file {string a}} {
set f [open $file w]
puts -nonewline $f $string
@@ -1119,6 +1161,7 @@ test fCmd-10.3.1 {file copy: comprehensive: dir to new name} -setup {
file mkdir [file join td1 tdx]
file mkdir [file join td2 tdy]
testchmod 0o555 td2
+ testchmod 0o555 td2/tdy; # Above line removes inherited perms. So restore.
file copy td1 td3
file copy td2 td4
list [lsort [glob td*]] [glob -directory td3 t*] \
@@ -1140,10 +1183,19 @@ test fCmd-10.4 {file copy: comprehensive: file to existing file} -setup {
createfile tfd2
createfile tfd3
createfile tfd4
- testchmod 0o444 tfs3
- testchmod 0o444 tfs4
- testchmod 0o444 tfd2
- testchmod 0o444 tfd4
+ if {$::tcl_platform(platform) eq "windows"} {
+ # On Windows testchmode will attach an ACL which file copy cannot handle
+ # so use good old attributes which file copy does understand
+ file attribute tfs3 -readonly 1
+ file attribute tfs4 -readonly 1
+ file attribute tfd2 -readonly 1
+ file attribute tfd4 -readonly 1
+ } else {
+ testchmod 0o444 tfs3
+ testchmod 0o444 tfs4
+ testchmod 0o444 tfd2
+ testchmod 0o444 tfd4
+ }
set msg [list [catch {file copy tf1 tf2} msg] $msg]
file copy -force tfs1 tfd1
file copy -force tfs2 tfd2
@@ -2701,13 +2753,20 @@ test fCmd-31.6 {file home USER} -body {
# env(HOME) even when user is current user. Assume result contains user
# name, else not sure how to check
string tolower [file home $::tcl_platform(user)]
-} -match glob -result [string tolower "*$::tcl_platform(user)*"]
+} -match glob -result [gethomedirglob $::tcl_platform(user)]
test fCmd-31.7 {file home UNKNOWNUSER} -body {
file home nosuchuser
} -returnCodes error -result {user "nosuchuser" doesn't exist}
test fCmd-31.8 {file home extra arg} -body {
file home $::tcl_platform(user) arg
} -returnCodes error -result {wrong # args: should be "file home ?user?"}
+test fCmd-31.9 {file home USER does not follow env(HOME)} -setup {
+ set ::env(HOME) [file join $::env(HOME) foo]
+} -cleanup {
+ set ::env(HOME) [file dirname $::env(HOME)]
+} -body {
+ string tolower [file home $::tcl_platform(user)]
+} -match glob -result [gethomedirglob $::tcl_platform(user)]
test fCmd-32.1 {file tildeexpand ~} -body {
file tildeexpand ~
@@ -2743,7 +2802,7 @@ test fCmd-32.5 {file tildeexpand ~USER} -body {
# env(HOME) even when user is current user. Assume result contains user
# name, else not sure how to check
string tolower [file tildeexpand ~$::tcl_platform(user)]
-} -match glob -result [string tolower "*$::tcl_platform(user)*"]
+} -match glob -result [gethomedirglob $::tcl_platform(user)]
test fCmd-32.6 {file tildeexpand ~UNKNOWNUSER} -body {
file tildeexpand ~nosuchuser
} -returnCodes error -result {user "nosuchuser" doesn't exist}
@@ -2758,7 +2817,7 @@ test fCmd-32.9 {file tildeexpand ~USER/bar} -body {
# env(HOME) even when user is current user. Assume result contains user
# name, else not sure how to check
string tolower [file tildeexpand ~$::tcl_platform(user)/bar]
-} -match glob -result [string tolower "*$::tcl_platform(user)*/bar"]
+} -match glob -result [file join [gethomedirglob $::tcl_platform(user)] bar]
test fCmd-32.10 {file tildeexpand ~UNKNOWNUSER} -body {
file tildeexpand ~nosuchuser/foo
} -returnCodes error -result {user "nosuchuser" doesn't exist}
@@ -2782,7 +2841,14 @@ test fCmd-32.16 {file tildeexpand ~USER\\bar} -body {
# env(HOME) even when user is current user. Assume result contains user
# name, else not sure how to check
string tolower [file tildeexpand ~$::tcl_platform(user)\\bar]
-} -constraints win -match glob -result [string tolower "*$::tcl_platform(user)*/bar"]
+} -constraints win -match glob -result [file join [gethomedirglob $::tcl_platform(user)] bar]
+test fCmd-32.17 {file tildeexpand ~USER does not mirror HOME} -setup {
+ set ::env(HOME) [file join $::env(HOME) foo]
+} -cleanup {
+ set ::env(HOME) [file dirname $::env(HOME)]
+} -body {
+ string tolower [file tildeexpand ~$::tcl_platform(user)]
+} -match glob -result [gethomedirglob $::tcl_platform(user)]
# cleanup
diff --git a/tests/fileSystem.test b/tests/fileSystem.test
index 5e98c39..d104282 100644
--- a/tests/fileSystem.test
+++ b/tests/fileSystem.test
@@ -275,6 +275,16 @@ test filesystem-1.30 {
test filesystem-1.30.1 {normalisation of existing user} -body {
file normalize ~$::tcl_platform(user)
} -result [file join [pwd] ~$::tcl_platform(user)]
+test filesystem-1.30.3 {file normalization should distinguish between ~ and ~user} -setup {
+ set oldhome $::env(HOME)
+ set olduserhome [file home $::tcl_platform(user)]
+ set ::env(HOME) [file join $oldhome temp]
+} -cleanup {
+ set env(HOME) $oldhome
+} -body {
+ list [string equal [file home] $::env(HOME)] \
+ [string equal $olduserhome [file home $::tcl_platform(user)]]
+} -result {1 1}
test filesystem-1.31 {link normalisation: link near filesystem root} {testsetplatform} {
testsetplatform unix
file normalize /foo/../bar
diff --git a/tests/io.test b/tests/io.test
index 20c2ed9..6251a4c 100644
--- a/tests/io.test
+++ b/tests/io.test
@@ -197,46 +197,50 @@ test io-1.9 {Tcl_WriteChars: WriteChars} {
set sizes
} {19 19 19 19 19}
+proc testreadwrite {size {mode ""} args} {
+ set tmpfile [file join [temporaryDirectory] io-1.10.tmp]
+ set w [string repeat A $size]
+ try {
+ set fd [open $tmpfile w$mode]
+ try {
+ if {[llength $args]} {
+ fconfigure $fd {*}$args
+ }
+ puts -nonewline $fd $w
+ } finally {
+ close $fd
+ }
+ set fd [open $tmpfile r$mode]
+ try {
+ if {[llength $args]} {
+ fconfigure $fd {*}$args
+ }
+ set r [read $fd]
+ } finally {
+ close $fd
+ }
+ } finally {
+ file delete $tmpfile
+ }
+ string equal $w $r
+}
+
test io-1.10 {WriteChars: large file (> INT_MAX). Bug 3d01d51bc4} -constraints {
pointerIs64bit perf
-} -setup {
- set tmpfile [file join [temporaryDirectory] io-1.10.tmp]
-} -cleanup {
- file delete $tmpfile
} -body {
- set fd [open $tmpfile w]
- puts -nonewline $fd [string repeat A 0x80000000]
- close $fd
- # TODO - Should really read it back in but large reads are not currently working!
- file size $tmpfile
-} -result 2147483648
+ testreadwrite 0x80000000
+} -result 1
test io-1.11 {WriteChars: large file (> UINT_MAX). Bug 3d01d51bc4} -constraints {
pointerIs64bit perf
-} -setup {
- set tmpfile [file join [temporaryDirectory] io-1.11.tmp]
-} -cleanup {
- file delete $tmpfile
} -body {
- set fd [open $tmpfile w]
- puts -nonewline $fd [string repeat A 0x100000000]
- close $fd
- # TODO - Should really read it back in but large reads are not currently working!
- file size $tmpfile
-} -result 4294967296
+ testreadwrite 0x100000000 "" -buffersize 1000000
+} -result 1
test io-1.12 {WriteChars: large file (== UINT_MAX). Bug 90ff9b7f73} -constraints {
pointerIs64bit perf
-} -setup {
- set tmpfile [file join [temporaryDirectory] io-1.12.tmp]
-} -cleanup {
- file delete $tmpfile
} -body {
- set fd [open $tmpfile w]
# *Exactly* UINT_MAX - separate bug from the general large file tests
- puts -nonewline $fd [string repeat A 0xffffffff]
- close $fd
- # TODO - Should really read it back in but large reads are not currently working!
- file size $tmpfile
-} -result 4294967295
+ testreadwrite 0xffffffff
+} -result 1
test io-2.1 {WriteBytes} {
# loop until all bytes are written
@@ -279,47 +283,25 @@ test io-2.4 {WriteBytes: reset sawLF after each buffer} {
close $f
lappend x [contents $path(test1)]
} [list "abcdefg\nhijklmno" "abcdefg\nhijklmnopqrstuvwxyz"]
-
test io-2.5 {WriteBytes: large file (> INT_MAX). Bug 3d01d51bc4} -constraints {
pointerIs64bit perf
-} -setup {
- set tmpfile [file join [temporaryDirectory] io-2.5.tmp]
-} -cleanup {
- file delete $tmpfile
} -body {
- set fd [open $tmpfile wb]
- puts -nonewline $fd [string repeat A 0x80000000]
- close $fd
- # TODO - Should really read it back in but large reads are not currently working!
- file size $tmpfile
-} -result 2147483648
+ # Binary mode
+ testreadwrite 0x80000000 b
+} -result 1
test io-2.6 {WriteBytes: large file (> UINT_MAX). Bug 3d01d51bc4} -constraints {
pointerIs64bit perf
-} -setup {
- set tmpfile [file join [temporaryDirectory] io-2.6.tmp]
-} -cleanup {
- file delete $tmpfile
} -body {
- set fd [open $tmpfile wb]
- puts -nonewline $fd [string repeat A 0x100000000]
- close $fd
- # TODO - Should really read it back in but large reads are not currently working!
- file size $tmpfile
-} -result 4294967296
+ # Binary mode
+ testreadwrite 0x100000000 b -buffersize 1000000
+} -result 1
test io-2.7 {WriteBytes: large file (== UINT_MAX). Bug 90ff9b7f73} -constraints {
pointerIs64bit perf
-} -setup {
- set tmpfile [file join [temporaryDirectory] io-2.7.tmp]
-} -cleanup {
- file delete $tmpfile
} -body {
- set fd [open $tmpfile wb]
# *Exactly* UINT_MAX - separate bug from the general large file tests
- puts -nonewline $fd [string repeat A 0xffffffff]
- close $fd
- # TODO - Should really read it back in but large reads are not currently working!
- file size $tmpfile
-} -result 4294967295
+ testreadwrite 0xffffffff b
+} -result 1
+
test io-3.1 {WriteChars: compatibility with WriteBytes} {
# loop until all bytes are written
diff --git a/tests/stringObj.test b/tests/stringObj.test
index 263e7ef..492e0eb 100644
--- a/tests/stringObj.test
+++ b/tests/stringObj.test
@@ -67,8 +67,8 @@ test stringObj-4.2 {Tcl_SetObjLength procedure, string gets longer} testobj {
testobj freeallvars
teststringobj set 1 abcdef
teststringobj setlength 1 10
- list [teststringobj length 1] [teststringobj length2 1]
-} {10 10}
+ teststringobj length 1
+} 10
test stringObj-4.3 {Tcl_SetObjLength procedure, string gets longer} testobj {
testobj freeallvars
teststringobj set 1 abcdef
@@ -76,7 +76,7 @@ test stringObj-4.3 {Tcl_SetObjLength procedure, string gets longer} testobj {
list [teststringobj length 1] [teststringobj length2 1] \
[teststringobj get 1]
} {10 20 abcdefxyzq}
-test stringObj-4.4 {Tcl_SetObjLength procedure, "expty string", length 0} testobj {
+test stringObj-4.4 {Tcl_SetObjLength procedure, "empty string", length 0} testobj {
testobj freeallvars
testobj newobj 1
teststringobj setlength 1 0
diff --git a/tests/tcltest.test b/tests/tcltest.test
index 48a3c17..19d0ad2 100644
--- a/tests/tcltest.test
+++ b/tests/tcltest.test
@@ -556,7 +556,7 @@ switch -- $::tcl_platform(platform) {
default {
# note in FAT/NTFS we won't be able to protect directory with read-only attribute...
catch {file attributes $notWriteableDir -readonly 1}
- catch {testchmod 0 $notWriteableDir}
+ catch {testchmod 0o444 $notWriteableDir}
}
}
test tcltest-8.3 {tcltest a.tcl -tmpdir notReadableDir} {
diff --git a/tests/winFCmd.test b/tests/winFCmd.test
index 43c7ced..5ebce10 100644
--- a/tests/winFCmd.test
+++ b/tests/winFCmd.test
@@ -45,15 +45,20 @@ proc contents {file} {
set r
}
+proc cleanupRecurse {args} {
+ # Assumes no loops via links!
+ # Need to change permissions BEFORE deletion
+ testchmod 0o777 {*}$args
+ foreach victim $args {
+ if {[file isdirectory $victim]} {
+ cleanupRecurse {*}[glob -nocomplain -directory $victim td* tf* Test*]
+ }
+ file delete -force $victim
+ }
+}
proc cleanup {args} {
- foreach p ". $args" {
- set x ""
- catch {
- set x [glob -directory $p tf* td*]
- }
- if {$x != ""} {
- catch {file delete -force -- {*}$x}
- }
+ foreach p [list [pwd] {*}$args] {
+ cleanupRecurse {*}[glob -nocomplain -directory $p tf* td*]
}
}
@@ -379,12 +384,12 @@ test winFCmd-1.38 {TclpRenameFile: check rename of conflicting inodes} -setup {
cleanup
} -constraints {win winNonZeroInodes knownMsvcBug notInCIenv} -body {
file mkdir td1
- foreach {a b} [MakeFiles td1] break
+ lassign [MakeFiles td1] a b
file rename -force $a $b
file exists $a
} -cleanup {
cleanup
-} -result {0}
+} -result 0
test winFCmd-2.1 {TclpCopyFile: errno: EACCES} -setup {
@@ -450,11 +455,11 @@ test winFCmd-2.12 {TclpCopyFile: CopyFile succeeds} -setup {
cleanup
} -constraints {win testfile} -body {
createfile tf1 tf1
- testchmod 0 tf1
+ file attribute tf1 -readonly 1
testfile cp tf1 tf2
list [contents tf2] [file writable tf2]
} -cleanup {
- catch {testchmod 0o666 tf1}
+ testchmod 0o660 tf1
cleanup
} -result {tf1 0}
test winFCmd-2.13 {TclpCopyFile: CopyFile fails} -setup {
@@ -496,11 +501,10 @@ test winFCmd-2.17 {TclpCopyFile: dst is readonly} -setup {
} -constraints {win testfile testchmod} -body {
createfile tf1 tf1
createfile tf2 tf2
- testchmod 0 tf2
+ file attribute tf2 -readonly 1
testfile cp tf1 tf2
list [file writable tf2] [contents tf2]
} -cleanup {
- catch {testchmod 0o666 tf2}
cleanup
} -result {1 tf1}
@@ -578,7 +582,6 @@ test winFCmd-3.11 {TclpDeleteFile: still can't remove path} -setup {
testfile rm tf1
} -cleanup {
close $fd
- catch {testchmod 0o666 tf1}
cleanup
} -returnCodes error -result EACCES
@@ -617,15 +620,18 @@ test winFCmd-5.1 {TclpCopyDirectory: calls TraverseWinTree} -setup {
test winFCmd-6.1 {TclpRemoveDirectory: errno: EACCES} -setup {
cleanup
-} -constraints {win testfile testchmod knownMsvcBug notInCIenv} -body {
- file mkdir td1
- testchmod 0 td1
- testfile rmdir td1
- file exists td1
+} -constraints {win testfile testchmod notInCIenv} -body {
+ # Parent's FILE_DELETE_CHILD setting permits deletion of subdir
+ # even when subdir DELETE mask is clear. So we need an intermediate
+ # parent td0 with FILE_DELETE_CHILD turned off while allowing R/W.
+ file mkdir td0/td1
+ testchmod 0o777 td0
+ testchmod 0 td0/td1
+ testfile rmdir td0/td1
+ file exists td0/td1
} -returnCodes error -cleanup {
- catch {testchmod 0o666 td1}
cleanup
-} -result {td1 EACCES}
+} -result {td0/td1 EACCES}
# This next test has a very hokey way of matching...
test winFCmd-6.2 {TclpRemoveDirectory: errno: EEXIST} -setup {
cleanup
@@ -633,7 +639,7 @@ test winFCmd-6.2 {TclpRemoveDirectory: errno: EEXIST} -setup {
file mkdir td1/td2
list [catch {testfile rmdir td1} msg] [file tail $msg]
} -result {1 {td1 EEXIST}}
-test winFCmd-6.3 {TclpRemoveDirectory: errno: EACCES} {win emptyTest} {
+test winFCmd-6.3 {TclpRemoveDirectory: errno: EACCES} {win emptyTest trashSystem} {
# can't test this w/o removing everything on your hard disk first!
# testfile rmdir /
} {}
@@ -669,17 +675,7 @@ test winFCmd-6.8 {TclpRemoveDirectory: RemoveDirectory fails} -setup {
createfile tf1
list [catch {testfile rmdir tf1} msg] [file tail $msg]
} -result {1 {tf1 ENOTDIR}}
-test winFCmd-6.9 {TclpRemoveDirectory: errno == EACCES} -setup {
- cleanup
-} -constraints {win testfile testchmod knownMsvcBug notInCIenv} -body {
- file mkdir td1
- testchmod 0 td1
- testfile rmdir td1
- file exists td1
-} -returnCodes error -cleanup {
- catch {testchmod 0o666 td1}
- cleanup
-} -result {td1 EACCES}
+# winFCmd-6.9 removed - was exact dup of winFCmd-6.1
test winFCmd-6.11 {TclpRemoveDirectory: attr == -1} -setup {
cleanup
} -constraints {win testfile notInCIenv} -body {
@@ -689,15 +685,19 @@ test winFCmd-6.11 {TclpRemoveDirectory: attr == -1} -setup {
} -returnCodes error -match regexp -result {^/ E(ACCES|EXIST)$}
test winFCmd-6.13 {TclpRemoveDirectory: write-protected} -setup {
cleanup
-} -constraints {win testfile testchmod knownMsvcBug notInCIenv} -body {
- file mkdir td1
- testchmod 0 td1
- testfile rmdir td1
- file exists td1
+} -constraints {win testfile testchmod notInCIenv} -body {
+ # Parent's FILE_DELETE_CHILD setting permits deletion of subdir
+ # even when subdir DELETE mask is clear. So we need an intermediate
+ # parent td0 with FILE_DELETE_CHILD turned off while allowing R/W.
+ file mkdir td0/td1
+ testchmod 0o770 td0
+ testchmod 0o444 td0/td1
+ testfile rmdir td0/td1
+ file exists td0/td1
} -cleanup {
- catch {testchmod 0o666 td1}
+ testchmod 0o770 td0/td1
cleanup
-} -returnCodes error -result {td1 EACCES}
+} -returnCodes error -result {td0/td1 EACCES}
# This next test has a very hokey way of matching...
test winFCmd-6.15 {TclpRemoveDirectory: !recursive} -setup {
cleanup
@@ -791,11 +791,12 @@ test winFCmd-7.11 {TraverseWinTree: call TraversalCopy: DOTREE_PRED} -setup {
} -constraints {win testfile testchmod} -body {
file mkdir td1
createfile td1/tf1 tf1
- testchmod 0 td1
+ testchmod 0o770 td1/tf1; # Else tf2 will have no ACL after td1 testchmod
+ testchmod 0o400 td1
testfile cpdir td1 td2
list [file exists td2] [file writable td2]
} -cleanup {
- catch {testchmod 0o666 td1}
+ testchmod 0o660 td1
cleanup
} -result {1 1}
test winFCmd-7.12 {TraverseWinTree: call TraversalDelete: DOTREE_PRED} -setup {
@@ -862,11 +863,12 @@ test winFCmd-7.19 {TraverseWinTree: call TraversalCopy: DOTREE_POSTD} -setup {
} -constraints {win testfile testchmod} -body {
file mkdir td1
createfile td1/tf1 tf1
- testchmod 0 td1
+ testchmod 0o770 td1/tf1; # Else tf2 will have no ACL after td1 testchmod
+ testchmod 0o400 td1
testfile cpdir td1 td2
list [file exists td2] [file writable td2]
} -cleanup {
- catch {testchmod 0o666 td1}
+ testchmod 0o660 td1
cleanup
} -result {1 1}
test winFCmd-7.20 {TraverseWinTree: call TraversalDelete: DOTREE_POSTD} -setup {
@@ -893,11 +895,12 @@ test winFCmd-8.2 {TraversalCopy: DOTREE_PRED} -setup {
cleanup
} -constraints {win testfile testchmod} -body {
file mkdir td1/td2
- testchmod 0 td1
+ testchmod 0o770 td1/td2; # Else td2 will have no ACL after td1 testchmod
+ testchmod 0o400 td1
testfile cpdir td1 td2
list [file writable td1] [file writable td1/td2]
} -cleanup {
- catch {testchmod 0o666 td1}
+ testchmod 0o660 td1
cleanup
} -result {0 1}
test winFCmd-8.3 {TraversalCopy: DOTREE_POSTD} -setup {
@@ -918,15 +921,19 @@ test winFCmd-9.1 {TraversalDelete: DOTREE_F} -setup {
} -result {}
test winFCmd-9.3 {TraversalDelete: DOTREE_PRED} -setup {
cleanup
-} -constraints {win testfile testchmod knownMsvcBug notInCIenv} -body {
- file mkdir td1/td2
- testchmod 0 td1
- testfile rmdir -force td1
+} -constraints {win testfile testchmod notInCIenv} -body {
+ # Parent's FILE_DELETE_CHILD setting permits deletion of subdir
+ # even when subdir DELETE mask is clear. So we need an intermediate
+ # parent td0 with FILE_DELETE_CHILD turned off while allowing R/W.
+ file mkdir td0/td1/td2
+ testchmod 0o770 td0
+ testchmod 0o400 td0/td1
+ testfile rmdir -force td0/td1
file exists td1
} -cleanup {
- catch {testchmod 0o666 td1}
+ testchmod 0o770 td0/td1
cleanup
-} -returnCodes error -result {td1 EACCES}
+} -returnCodes error -result {td0/td1 EACCES}
test winFCmd-9.4 {TraversalDelete: DOTREE_POSTD} -setup {
cleanup
} -constraints {win testfile} -body {
@@ -1417,7 +1424,6 @@ test winFCmd-19.9 {Windows devices path names} -constraints win -body {
# }
#}
-# cleanup
cleanup
::tcltest::cleanupTests
return
diff --git a/tests/winTime.test b/tests/winTime.test
index ae1797d..0d7298f 100644
--- a/tests/winTime.test
+++ b/tests/winTime.test
@@ -19,9 +19,6 @@ if {"::tcltest" ni [namespace children]} {
catch [list package require -exact tcl::test [info patchlevel]]
testConstraint testwinclock [llength [info commands testwinclock]]
-# Some things fail under all Continuous Integration systems for subtle reasons
-# such as CI often running with elevated privileges in a container.
-testConstraint notInCIenv [expr {![info exists ::env(CI)]}]
# The next two tests will crash on Windows if the check for negative
# clock values is not done properly.
@@ -43,7 +40,7 @@ test winTime-1.2 {TclpGetDate} {win} {
# with the Windows clock. 30 sec really isn't enough,
# but how much time does a tester have patience for?
-test winTime-2.1 {Synchronization of Tcl and Windows clocks} {testwinclock notInCIenv} {
+test winTime-2.1 {Synchronization of Tcl and Windows clocks} testwinclock {
# May fail due to OS/hardware discrepancies. See:
# http://support.microsoft.com/default.aspx?scid=kb;en-us;274323
set failed {}
diff --git a/tools/valgrind_suppress b/tools/valgrind_suppress
index fb7f173..11ca880 100644
--- a/tools/valgrind_suppress
+++ b/tools/valgrind_suppress
@@ -1,3 +1,17 @@
+#{
+# Tcl_GetChannelOption/TcpGetOptionProc/TcphostPortList/getnameinfo/gethostbyaddr_r
+# Memcheck:Leak
+# match-leak-kinds: reachable
+# fun:malloc
+# fun:strdup
+# ...
+# fun:module_load
+# ...
+# fun:getnameinfo
+# ...
+# fun:Tcl_GetChannelOption
+#}
+
{
TclCreatesocketAddress/getaddrinfo/calloc
Memcheck:Leak
@@ -11,6 +25,16 @@
{
TclCreatesocketAddress/getaddrinfo/malloc
Memcheck:Leak
+ match-leak-kinds: definite
+ fun:malloc
+ ...
+ fun:getaddrinfo
+ fun:TclCreateSocketAddress
+}
+
+{
+ TclCreatesocketAddress/getaddrinfo/malloc
+ Memcheck:Leak
match-leak-kinds: reachable
fun:malloc
...
@@ -19,6 +43,18 @@
}
{
+ TclpDlopen/decompose_rpath
+ Memcheck:Leak
+ match-leak-kinds: reachable
+ fun:malloc
+ fun:decompose_rpath
+ ...
+ fun:dlopen_doit
+ ...
+ fun:TclpDlopen
+}
+
+{
TclpDlopen/load
Memcheck:Leak
match-leak-kinds: reachable
@@ -72,6 +108,46 @@
}
{
+ TclpGeHostByName/gethostbyname_r/strdup/malloc
+ Memcheck:Leak
+ match-leak-kinds: reachable
+ fun:malloc
+ fun:strdup
+ ...
+ fun:dl_open_worker
+ ...
+ fun:do_dlopen
+ ...
+ fun:TclpGetHostByName
+}
+
+{
+ TclpGeHostByName/gethostbyname_r/calloc
+ Memcheck:Leak
+ match-leak-kinds: reachable
+ fun:calloc
+ ...
+ fun:dl_open_worker
+ ...
+ fun:do_dlopen
+ ...
+ fun:TclpGetHostByName
+}
+
+{
+ TclpGeHostByName/gethostbyname_r/malloc
+ Memcheck:Leak
+ match-leak-kinds: reachable
+ fun:malloc
+ ...
+ fun:dl_open_worker
+ ...
+ fun:do_dlopen
+ ...
+ fun:TclpGetHostByName
+}
+
+{
TclpGetPwNam/getpwname_r/__nss_next2/calloc
Memcheck:Leak
match-leak-kinds: reachable
@@ -105,6 +181,57 @@
}
{
+ TclpGetGrGid/getgrgid_r/module_load
+ Memcheck:Leak
+ match-leak-kinds: reachable
+ fun:calloc
+ ...
+ fun:module_load
+ ...
+ fun:TclpGetGrGid
+}
+
+{
+ TclpGetGrGid/getgrgid_r/module_load
+ Memcheck:Leak
+ match-leak-kinds: reachable
+ fun:malloc
+ ...
+ fun:module_load
+ ...
+ fun:TclpGetGrGid
+}
+
+{
+ TcphostPortList/getnameinfo/module_load/calloc
+ Memcheck:Leak
+ match-leak-kinds: definite,reachable
+ fun:calloc
+ ...
+ fun:dl_open_worker_begin
+ ...
+ fun:module_load
+ ...
+ fun:getnameinfo
+ fun:TcpHostPortList
+}
+
+{
+ # see sourceware glibc Bug 14984 - getnameinfo() might be leaking memory
+ TcphostPortList/getnameinfo/module_load/mallco
+ Memcheck:Leak
+ match-leak-kinds: definite,reachable
+ fun:malloc
+ ...
+ fun:dl_open_worker_begin
+ ...
+ fun:module_load
+ ...
+ fun:getnameinfo
+ fun:TcpHostPortList
+}
+
+{
TclpThreadExit/pthread_exit/calloc
Memcheck:Leak
match-leak-kinds: reachable
@@ -124,3 +251,13 @@
fun:TclpThreadExit
}
+{
+ TclpThreadExit/pthread_exit/malloc
+ Memcheck:Leak
+ match-leak-kinds: definite
+ fun:malloc
+ ...
+ fun:pthread_exit
+ fun:TclpThreadExit
+}
+
diff --git a/unix/dltest/pkga.c b/unix/dltest/pkga.c
index 579c323..aacb9cd 100644
--- a/unix/dltest/pkga.c
+++ b/unix/dltest/pkga.c
@@ -40,7 +40,7 @@ Pkga_EqObjCmd(
{
int result;
const char *str1, *str2;
- int len1, len2;
+ Tcl_Size len1, len2;
(void)dummy;
if (objc != 3) {
diff --git a/unix/dltest/pkgb.c b/unix/dltest/pkgb.c
index 651c132..750d270 100644
--- a/unix/dltest/pkgb.c
+++ b/unix/dltest/pkgb.c
@@ -84,7 +84,7 @@ Pkgb_UnsafeObjCmd(
(void)objc;
(void)objv;
- return Tcl_EvalEx(interp, "list unsafe command invoked", -1, TCL_EVAL_GLOBAL);
+ return Tcl_EvalEx(interp, "list unsafe command invoked", TCL_INDEX_NONE, TCL_EVAL_GLOBAL);
}
static int
diff --git a/unix/dltest/pkgc.c b/unix/dltest/pkgc.c
index 8e9c829..582d457 100644
--- a/unix/dltest/pkgc.c
+++ b/unix/dltest/pkgc.c
@@ -81,7 +81,7 @@ Pkgc_UnsafeObjCmd(
(void)objc;
(void)objv;
- Tcl_SetObjResult(interp, Tcl_NewStringObj("unsafe command invoked", -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("unsafe command invoked", TCL_INDEX_NONE));
return TCL_OK;
}
diff --git a/unix/dltest/pkgd.c b/unix/dltest/pkgd.c
index 1b97d4c..52ba968 100644
--- a/unix/dltest/pkgd.c
+++ b/unix/dltest/pkgd.c
@@ -81,7 +81,7 @@ Pkgd_UnsafeObjCmd(
(void)objc;
(void)objv;
- Tcl_SetObjResult(interp, Tcl_NewStringObj("unsafe command invoked", -1));
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("unsafe command invoked", TCL_INDEX_NONE));
return TCL_OK;
}
diff --git a/unix/dltest/pkge.c b/unix/dltest/pkge.c
index 26a4b79..5f0db9b 100644
--- a/unix/dltest/pkge.c
+++ b/unix/dltest/pkge.c
@@ -41,5 +41,5 @@ Pkge_Init(
if (Tcl_InitStubs(interp, "8.5-", 0) == NULL) {
return TCL_ERROR;
}
- return Tcl_EvalEx(interp, script, -1, 0);
+ return Tcl_EvalEx(interp, script, TCL_INDEX_NONE, 0);
}
diff --git a/unix/dltest/pkgua.c b/unix/dltest/pkgua.c
index 16684a8..b14fca8 100644
--- a/unix/dltest/pkgua.c
+++ b/unix/dltest/pkgua.c
@@ -127,7 +127,7 @@ PkguaEqObjCmd(
{
int result;
const char *str1, *str2;
- int len1, len2;
+ Tcl_Size len1, len2;
(void)dummy;
if (objc != 3) {
diff --git a/unix/dltest/pkgπ.c b/unix/dltest/pkgπ.c
index dc01fbd..58b36db 100644
--- a/unix/dltest/pkgπ.c
+++ b/unix/dltest/pkgπ.c
@@ -38,9 +38,6 @@ Pkg\u03C0_\u03A0ObjCmd(
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
{
- int result;
- const char *str1, *str2;
- int len1, len2;
(void)dummy;
if (objc != 1) {
diff --git a/unix/tclUnixFCmd.c b/unix/tclUnixFCmd.c
index 7753cec..b8911df 100644
--- a/unix/tclUnixFCmd.c
+++ b/unix/tclUnixFCmd.c
@@ -1648,7 +1648,7 @@ SetPermissionsAttribute(
Tcl_Obj *modeObj;
TclNewLiteralStringObj(modeObj, "0o");
- Tcl_AppendToObj(modeObj, modeStringPtr+scanned+1, -1);
+ Tcl_AppendToObj(modeObj, modeStringPtr+scanned+1, TCL_INDEX_NONE);
result = Tcl_GetWideIntFromObj(NULL, modeObj, &mode);
Tcl_DecrRefCount(modeObj);
}
diff --git a/unix/tclUnixSock.c b/unix/tclUnixSock.c
index 864d477..c16b081 100644
--- a/unix/tclUnixSock.c
+++ b/unix/tclUnixSock.c
@@ -1030,10 +1030,10 @@ TcpGetOptionProc(
if ((len == 0) || ((len > 1) && (optionName[1] == 'k') &&
(strncmp(optionName, "-keepalive", len) == 0))) {
+ int opt = 0;
#if defined(SO_KEEPALIVE)
- socklen_t size;
+ socklen_t size = sizeof(opt);
#endif
- int opt = 0;
if (len == 0) {
Tcl_DStringAppendElement(dsPtr, "-keepalive");
@@ -1050,10 +1050,10 @@ TcpGetOptionProc(
if ((len == 0) || ((len > 1) && (optionName[1] == 'n') &&
(strncmp(optionName, "-nodelay", len) == 0))) {
+ int opt = 0;
#if defined(SOL_TCP) && defined(TCP_NODELAY)
- socklen_t size;
+ socklen_t size = sizeof(opt);
#endif
- int opt = 0;
if (len == 0) {
Tcl_DStringAppendElement(dsPtr, "-nodelay");
diff --git a/win/tclWin32Dll.c b/win/tclWin32Dll.c
index 2836e4f..01fa6c3 100644
--- a/win/tclWin32Dll.c
+++ b/win/tclWin32Dll.c
@@ -379,7 +379,7 @@ TclWinDriveLetterForVolMountPoint(
if (!alreadyStored) {
dlPtr2 = (MountPointMap *)Tcl_Alloc(sizeof(MountPointMap));
dlPtr2->volumeName = (WCHAR *)TclNativeDupInternalRep(Target);
- dlPtr2->driveLetter = (char) drive[0];
+ dlPtr2->driveLetter = (WCHAR) drive[0];
dlPtr2->nextPtr = driveLetterLookup;
driveLetterLookup = dlPtr2;
}
@@ -405,7 +405,7 @@ TclWinDriveLetterForVolMountPoint(
dlPtr2 = (MountPointMap *)Tcl_Alloc(sizeof(MountPointMap));
dlPtr2->volumeName = (WCHAR *)TclNativeDupInternalRep((void *)mountPoint);
- dlPtr2->driveLetter = -1;
+ dlPtr2->driveLetter = (WCHAR)-1;
dlPtr2->nextPtr = driveLetterLookup;
driveLetterLookup = dlPtr2;
Tcl_MutexUnlock(&mountPointMap);
diff --git a/win/tclWinChan.c b/win/tclWinChan.c
index 4968802..ca79e42 100644
--- a/win/tclWinChan.c
+++ b/win/tclWinChan.c
@@ -613,7 +613,7 @@ FileInputProc(
if (ReadFile(infoPtr->handle, (LPVOID) buf, (DWORD) bufSize, &bytesRead,
(LPOVERLAPPED) NULL) != FALSE) {
- return bytesRead;
+ return (int)bytesRead;
}
Tcl_WinConvertError(GetLastError());
@@ -670,7 +670,7 @@ FileOutputProc(
return -1;
}
infoPtr->dirty = 1;
- return bytesWritten;
+ return (int)bytesWritten;
}
/*
@@ -1483,7 +1483,7 @@ NativeIsComPort(
const WCHAR *nativePath) /* Path of file to access, native encoding. */
{
const WCHAR *p = (const WCHAR *) nativePath;
- int i, len = wcslen(p);
+ size_t i, len = wcslen(p);
/*
* 1. Look for com[1-9]:?
diff --git a/win/tclWinFile.c b/win/tclWinFile.c
index 30ca622..4c63222 100644
--- a/win/tclWinFile.c
+++ b/win/tclWinFile.c
@@ -1438,21 +1438,39 @@ TclpGetUserHome(
if (domain == NULL) {
const char *ptr;
- /*
- * No domain. Firstly check it's the current user
- */
-
+ /*
+ * Treat the current user as a special case because the general case
+ * below does not properly retrieve the path. The NetUserGetInfo
+ * call returns an empty path and the code defaults to the user's
+ * name in the profiles directory. On modern Windows systems, this
+ * is generally wrong as when the account is a Microsoft account,
+ * for example abcdefghi@outlook.com, the directory name is
+ * abcde and not abcdefghi.
+ *
+ * Note we could have just used env(USERPROFILE) here but
+ * the intent is to retrieve (as on Unix) the system's view
+ * of the home irrespective of environment settings of HOME
+ * and USERPROFILE.
+ *
+ * Fixing this for the general user needs more investigating but
+ * at least for the current user we can use a direct call.
+ */
ptr = TclpGetUserName(&ds);
if (ptr != NULL && strcasecmp(name, ptr) == 0) {
- /*
- * Try safest and fastest way to get current user home
- */
-
- ptr = TclGetEnv("HOME", &ds);
- if (ptr != NULL) {
- Tcl_JoinPath(1, &ptr, bufferPtr);
- rc = 1;
- result = Tcl_DStringValue(bufferPtr);
+ HANDLE hProcess;
+ WCHAR buf[MAX_PATH];
+ DWORD nChars = sizeof(buf) / sizeof(buf[0]);
+ /* Sadly GetCurrentProcessToken not in Win 7 so slightly longer */
+ hProcess = GetCurrentProcess(); /* Need not be closed */
+ if (hProcess) {
+ HANDLE hToken;
+ if (OpenProcessToken(hProcess, TOKEN_QUERY, &hToken)) {
+ if (GetUserProfileDirectoryW(hToken, buf, &nChars)) {
+ result = Tcl_WCharToUtfDString(buf, nChars-1, (bufferPtr));
+ rc = 1;
+ }
+ CloseHandle(hToken);
+ }
}
}
Tcl_DStringFree(&ds);
@@ -1524,30 +1542,6 @@ TclpGetUserHome(
if (wDomain != NULL) {
NetApiBufferFree((void *) wDomain);
}
- if (result == NULL) {
- /*
- * Look in the "Password Lists" section of system.ini for the local
- * user. There are also entries in that section that begin with a "*"
- * character that are used by Windows for other purposes; ignore user
- * names beginning with a "*".
- */
-
- char buf[MAX_PATH];
-
- if (name[0] != '*') {
- if (GetPrivateProfileStringA("Password Lists", name, "", buf,
- MAX_PATH, "system.ini") > 0) {
- /*
- * User exists, but there is no such thing as a home directory
- * in system.ini. Return "{Windows drive}:/".
- */
-
- GetWindowsDirectoryA(buf, MAX_PATH);
- Tcl_DStringAppend(bufferPtr, buf, 3);
- result = Tcl_DStringValue(bufferPtr);
- }
- }
- }
return result;
}
diff --git a/win/tclWinPanic.c b/win/tclWinPanic.c
index 7c21167..7928dcd 100644
--- a/win/tclWinPanic.c
+++ b/win/tclWinPanic.c
@@ -56,10 +56,10 @@ Tcl_ConsolePanic(
if (IsDebuggerPresent()) {
OutputDebugStringW(msgString);
} else if (_isatty(2)) {
- WriteConsoleW(handle, msgString, wcslen(msgString), &dummy, 0);
+ WriteConsoleW(handle, msgString, (DWORD)wcslen(msgString), &dummy, 0);
} else {
buf[0] = '\xEF'; buf[1] = '\xBB'; buf[2] = '\xBF'; /* UTF-8 bom */
- WriteFile(handle, buf, strlen(buf), &dummy, 0);
+ WriteFile(handle, buf, (DWORD)strlen(buf), &dummy, 0);
WriteFile(handle, "\n", 1, &dummy, 0);
FlushFileBuffers(handle);
}
diff --git a/win/tclWinTest.c b/win/tclWinTest.c
index c012b53..c7abcdc 100644
--- a/win/tclWinTest.c
+++ b/win/tclWinTest.c
@@ -22,9 +22,8 @@
/*
* For TestplatformChmod on Windows
*/
-#ifdef _WIN32
#include <aclapi.h>
-#endif
+#include <sddl.h>
/*
* MinGW 3.4.2 does not define this.
@@ -390,176 +389,189 @@ TestExceptionCmd(
return TCL_OK;
}
+/*
+ * This "chmod" works sufficiently for test script purposes. Do not expect
+ * it to be exact emulation of Unix chmod (not sure if that's even possible)
+ */
static int
TestplatformChmod(
const char *nativePath,
int pmode)
{
- static const SECURITY_INFORMATION infoBits = OWNER_SECURITY_INFORMATION
- | GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION;
- /* don't reset change permissions mask (WRITE_DAC, allow test-cases restore it to cleanup) */
- static const DWORD readOnlyMask = FILE_DELETE_CHILD | FILE_ADD_FILE
- | FILE_ADD_SUBDIRECTORY | FILE_WRITE_EA | FILE_APPEND_DATA
- | FILE_WRITE_DATA
- | DELETE;
-
- /*
- * References to security functions (only available on NT and later).
+ /*
+ * Note FILE_DELETE_CHILD missing from dirWriteMask because we do
+ * not want overriding of child's delete setting when testing
*/
-
- const BOOL set_readOnly = !(pmode & 0222);
- BOOL acl_readOnly_found = FALSE, curAclPresent, curAclDefaulted;
- SID_IDENTIFIER_AUTHORITY userSidAuthority = {
- SECURITY_WORLD_SID_AUTHORITY
- };
- BYTE *secDesc = 0;
- DWORD secDescLen, attr, newAclSize;
- ACL_SIZE_INFORMATION ACLSize;
- PACL curAcl, newAcl = 0;
- WORD j;
- SID *userSid = 0;
- char *userDomain = 0;
+ static const DWORD dirWriteMask =
+ FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA |
+ FILE_ADD_FILE | FILE_ADD_SUBDIRECTORY | STANDARD_RIGHTS_WRITE | DELETE |
+ SYNCHRONIZE;
+ static const DWORD dirReadMask =
+ FILE_READ_ATTRIBUTES | FILE_READ_EA | FILE_LIST_DIRECTORY |
+ STANDARD_RIGHTS_READ | SYNCHRONIZE;
+ /* Note - default user privileges allow ignoring TRAVERSE setting */
+ static const DWORD dirExecuteMask =
+ FILE_TRAVERSE | STANDARD_RIGHTS_READ | SYNCHRONIZE;
+
+ static const DWORD fileWriteMask =
+ FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_WRITE_DATA |
+ FILE_APPEND_DATA | STANDARD_RIGHTS_WRITE | DELETE | SYNCHRONIZE;
+ static const DWORD fileReadMask =
+ FILE_READ_ATTRIBUTES | FILE_READ_EA | FILE_READ_DATA |
+ STANDARD_RIGHTS_READ | SYNCHRONIZE;
+ static const DWORD fileExecuteMask =
+ FILE_EXECUTE | STANDARD_RIGHTS_READ | SYNCHRONIZE;
+
+ DWORD attr, newAclSize;
+ PACL newAcl = NULL;
int res = 0;
- /*
- * Process the chmod request.
- */
+ HANDLE hToken = NULL;
+ int i;
+ int nSids = 0;
+ struct {
+ PSID pSid;
+ DWORD mask;
+ DWORD sidLen;
+ } aceEntry[3];
+ DWORD dw;
+ int isDir;
+ TOKEN_USER *pTokenUser = NULL;
- attr = GetFileAttributesA(nativePath);
-
- /*
- * nativePath not found
- */
+ res = -1; /* Assume failure */
+ attr = GetFileAttributesA(nativePath);
if (attr == 0xFFFFFFFF) {
- res = -1;
- goto done;
+ goto done; /* Not found */
}
- /*
- * If nativePath is not a directory, there is no special handling.
- */
+ isDir = (attr & FILE_ATTRIBUTE_DIRECTORY) != 0;
- if (!(attr & FILE_ATTRIBUTE_DIRECTORY)) {
+ if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken)) {
goto done;
}
-
- /*
- * Set the result to error, if the ACL change is successful it will be
- * reset to 0.
- */
-
- res = -1;
-
- /*
- * Read the security descriptor for the directory. Note the first call
- * obtains the size of the security descriptor.
- */
-
- if (!GetFileSecurityA(nativePath, infoBits, NULL, 0, &secDescLen)) {
- DWORD secDescLen2 = 0;
-
- if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
- goto done;
- }
-
- secDesc = (BYTE *)Tcl_Alloc(secDescLen);
- if (!GetFileSecurityA(nativePath, infoBits,
- (PSECURITY_DESCRIPTOR) secDesc, secDescLen, &secDescLen2)
- || (secDescLen < secDescLen2)) {
- goto done;
- }
- }
-
- /*
- * Get the World SID.
- */
-
- userSid = (SID *)Tcl_Alloc(GetSidLengthRequired((UCHAR) 1));
- InitializeSid(userSid, &userSidAuthority, (BYTE) 1);
- *(GetSidSubAuthority(userSid, 0)) = SECURITY_WORLD_RID;
-
- /*
- * If curAclPresent == false then curAcl and curAclDefaulted not valid.
- */
-
- if (!GetSecurityDescriptorDacl((PSECURITY_DESCRIPTOR) secDesc,
- &curAclPresent, &curAcl, &curAclDefaulted)) {
+
+ /* Get process SID */
+ if (!GetTokenInformation(hToken, TokenUser, NULL, 0, &dw) &&
+ GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
goto done;
}
- if (!curAclPresent || !curAcl) {
- ACLSize.AclBytesInUse = 0;
- ACLSize.AceCount = 0;
- } else if (!GetAclInformation(curAcl, &ACLSize, sizeof(ACLSize),
- AclSizeInformation)) {
+ pTokenUser = (TOKEN_USER *)Tcl_Alloc(dw);
+ if (!GetTokenInformation(hToken, TokenUser, pTokenUser, dw, &dw)) {
goto done;
}
-
- /*
- * Allocate memory for the new ACL.
- */
-
- newAclSize = ACLSize.AclBytesInUse + sizeof(ACCESS_DENIED_ACE)
- + GetLengthSid(userSid) - sizeof(DWORD);
- newAcl = (PACL) Tcl_Alloc(newAclSize);
-
- /*
- * Initialize the new ACL.
- */
-
- if (!InitializeAcl(newAcl, newAclSize, ACL_REVISION)) {
+ aceEntry[nSids].sidLen = GetLengthSid(pTokenUser->User.Sid);
+ aceEntry[nSids].pSid = Tcl_Alloc(aceEntry[nSids].sidLen);
+ if (!CopySid(aceEntry[nSids].sidLen,
+ aceEntry[nSids].pSid,
+ pTokenUser->User.Sid)) {
+ Tcl_Free(aceEntry[nSids].pSid); /* Since we have not ++'ed nSids */
goto done;
}
-
- /*
- * Add denied to make readonly, this will be known as a "read-only tag".
+ /*
+ * Always include DACL modify rights so we don't get locked out
*/
-
- if (set_readOnly && !AddAccessDeniedAce(newAcl, ACL_REVISION,
- readOnlyMask, userSid)) {
- goto done;
+ aceEntry[nSids].mask = READ_CONTROL | WRITE_DAC | WRITE_OWNER | SYNCHRONIZE |
+ FILE_READ_ATTRIBUTES | FILE_WRITE_ATTRIBUTES;
+ if (pmode & 0700) {
+ /* Owner permissions. Assumes current process is owner */
+ if (pmode & 0400) {
+ aceEntry[nSids].mask |= isDir ? dirReadMask : fileReadMask;
+ }
+ if (pmode & 0200) {
+ aceEntry[nSids].mask |= isDir ? dirWriteMask : fileWriteMask;
+ }
+ if (pmode & 0100) {
+ aceEntry[nSids].mask |= isDir ? dirExecuteMask : fileExecuteMask;
+ }
}
+ ++nSids;
+
+ if (pmode & 0070) {
+ /* Group permissions. */
- acl_readOnly_found = FALSE;
- for (j = 0; j < ACLSize.AceCount; j++) {
- LPVOID pACE2;
- ACE_HEADER *phACE2;
+ TOKEN_PRIMARY_GROUP *pTokenGroup;
- if (!GetAce(curAcl, j, &pACE2)) {
+ /* Get primary group SID */
+ if (!GetTokenInformation(
+ hToken, TokenPrimaryGroup, NULL, 0, &dw) &&
+ GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
goto done;
}
+ pTokenGroup = (TOKEN_PRIMARY_GROUP *)Tcl_Alloc(dw);
+ if (!GetTokenInformation(hToken, TokenPrimaryGroup, pTokenGroup, dw, &dw)) {
+ Tcl_Free(pTokenGroup);
+ goto done;
+ }
+ aceEntry[nSids].sidLen = GetLengthSid(pTokenGroup->PrimaryGroup);
+ aceEntry[nSids].pSid = Tcl_Alloc(aceEntry[nSids].sidLen);
+ if (!CopySid(aceEntry[nSids].sidLen, aceEntry[nSids].pSid, pTokenGroup->PrimaryGroup)) {
+ Tcl_Free(pTokenGroup);
+ Tcl_Free(aceEntry[nSids].pSid); /* Since we have not ++'ed nSids */
+ goto done;
+ }
+ Tcl_Free(pTokenGroup);
- phACE2 = (ACE_HEADER *) pACE2;
-
- /*
- * Do NOT propagate inherited ACEs.
- */
+ /* Generate mask for group ACL */
- if (phACE2->AceFlags & INHERITED_ACE) {
- continue;
+ aceEntry[nSids].mask = 0;
+ if (pmode & 0040) {
+ aceEntry[nSids].mask |= isDir ? dirReadMask : fileReadMask;
}
+ if (pmode & 0020) {
+ aceEntry[nSids].mask |= isDir ? dirWriteMask : fileWriteMask;
+ }
+ if (pmode & 0010) {
+ aceEntry[nSids].mask |= isDir ? dirExecuteMask : fileExecuteMask;
+ }
+ ++nSids;
+ }
- /*
- * Skip the "read-only tag" restriction (either added above, or it is
- * being removed).
- */
+ if (pmode & 0007) {
+ /* World permissions */
+ PSID pWorldSid;
+ if (!ConvertStringSidToSidA("S-1-1-0", &pWorldSid)) {
+ goto done;
+ }
+ aceEntry[nSids].sidLen = GetLengthSid(pWorldSid);
+ aceEntry[nSids].pSid = Tcl_Alloc(aceEntry[nSids].sidLen);
+ if (!CopySid(aceEntry[nSids].sidLen, aceEntry[nSids].pSid, pWorldSid)) {
+ LocalFree(pWorldSid);
+ Tcl_Free(aceEntry[nSids].pSid); /* Since we have not ++'ed nSids */
+ goto done;
+ }
+ LocalFree(pWorldSid);
- if (phACE2->AceType == ACCESS_DENIED_ACE_TYPE) {
- ACCESS_DENIED_ACE *pACEd = (ACCESS_DENIED_ACE *) phACE2;
+ /* Generate mask for world ACL */
- if (pACEd->Mask == readOnlyMask
- && EqualSid(userSid, (PSID) &pACEd->SidStart)) {
- acl_readOnly_found = TRUE;
- continue;
- }
+ aceEntry[nSids].mask = 0;
+ if (pmode & 0004) {
+ aceEntry[nSids].mask |= isDir ? dirReadMask : fileReadMask;
+ }
+ if (pmode & 0002) {
+ aceEntry[nSids].mask |= isDir ? dirWriteMask : fileWriteMask;
}
+ if (pmode & 0001) {
+ aceEntry[nSids].mask |= isDir ? dirExecuteMask : fileExecuteMask;
+ }
+ ++nSids;
+ }
- /*
- * Copy the current ACE from the old to the new ACL.
- */
+ /* Allocate memory and initialize the new ACL. */
+
+ newAclSize = sizeof(ACL);
+ /* Add in size required for each ACE entry in the ACL */
+ for (i = 0; i < nSids; ++i) {
+ newAclSize +=
+ offsetof(ACCESS_ALLOWED_ACE, SidStart) + aceEntry[i].sidLen;
+ }
+ newAcl = (PACL)Tcl_Alloc(newAclSize);
+ if (!InitializeAcl(newAcl, newAclSize, ACL_REVISION)) {
+ goto done;
+ }
- if (!AddAce(newAcl, ACL_REVISION, MAXDWORD, (PACL *) pACE2,
- ((PACE_HEADER) pACE2)->AceSize)) {
+ for (i = 0; i < nSids; ++i) {
+ if (!AddAccessAllowedAce(newAcl, ACL_REVISION, aceEntry[i].mask, aceEntry[i].pSid)) {
goto done;
}
}
@@ -569,36 +581,39 @@ TestplatformChmod(
* to remove inherited ACL (we need to overwrite the default ACL's in this case)
*/
- if (set_readOnly == acl_readOnly_found || SetNamedSecurityInfoA(
- (LPSTR) nativePath, SE_FILE_OBJECT,
- DACL_SECURITY_INFORMATION /*| PROTECTED_DACL_SECURITY_INFORMATION*/,
- NULL, NULL, newAcl, NULL) == ERROR_SUCCESS) {
+ if (SetNamedSecurityInfoA((LPSTR)nativePath,
+ SE_FILE_OBJECT,
+ DACL_SECURITY_INFORMATION |
+ PROTECTED_DACL_SECURITY_INFORMATION,
+ NULL,
+ NULL,
+ newAcl,
+ NULL) == ERROR_SUCCESS) {
res = 0;
}
done:
- if (secDesc) {
- Tcl_Free(secDesc);
+ if (pTokenUser) {
+ Tcl_Free(pTokenUser);
+ }
+ if (hToken) {
+ CloseHandle(hToken);
}
if (newAcl) {
Tcl_Free(newAcl);
}
- if (userSid) {
- Tcl_Free(userSid);
- }
- if (userDomain) {
- Tcl_Free(userDomain);
+ for (i = 0; i < nSids; ++i) {
+ Tcl_Free(aceEntry[i].pSid);
}
if (res != 0) {
return res;
}
- /*
- * Run normal chmod command.
- */
-
+ /* Run normal chmod command */
return chmod(nativePath, pmode);
+
+
}
/*