summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkjnash <k.j.nash@usa.net>2020-08-28 01:53:33 (GMT)
committerkjnash <k.j.nash@usa.net>2020-08-28 01:53:33 (GMT)
commitbba42d0251c44fb8d13efa3b72c1b443dab6063f (patch)
tree9533368b31032b1588674dc02ba2ce4c08217f20
parent17058912aa60f6a98953579de27b7876ce1ec4dd (diff)
parent1f7a1beab25bccf98fa6643e73672de5fb5b5fd1 (diff)
downloadtcl-bba42d0251c44fb8d13efa3b72c1b443dab6063f.zip
tcl-bba42d0251c44fb8d13efa3b72c1b443dab6063f.tar.gz
tcl-bba42d0251c44fb8d13efa3b72c1b443dab6063f.tar.bz2
Merge 8.7
-rw-r--r--.fossil-settings/ignore-glob3
-rw-r--r--.travis.yml60
-rw-r--r--generic/tclBasic.c27
-rw-r--r--generic/tclCmdMZ.c2
-rw-r--r--generic/tclCompExpr.c4
-rw-r--r--generic/tclDate.c4
-rw-r--r--generic/tclExecute.c6
-rw-r--r--generic/tclGetDate.y4
-rw-r--r--generic/tclIO.c2
-rw-r--r--generic/tclIORChan.c8
-rw-r--r--generic/tclInt.h2
-rw-r--r--generic/tclLink.c10
-rw-r--r--generic/tclOOBasic.c2
-rw-r--r--generic/tclPkg.c3
-rw-r--r--generic/tclProcess.c12
-rw-r--r--generic/tclTrace.c4
-rw-r--r--generic/tclVar.c2
-rw-r--r--tests/chanio.test8
-rw-r--r--tests/event.test5
-rw-r--r--tests/io.test11
-rw-r--r--win/nmakehlp.c2
-rw-r--r--win/tclWinConsole.c11
-rw-r--r--win/tclWinPort.h4
23 files changed, 105 insertions, 91 deletions
diff --git a/.fossil-settings/ignore-glob b/.fossil-settings/ignore-glob
index a58aef5..651d616 100644
--- a/.fossil-settings/ignore-glob
+++ b/.fossil-settings/ignore-glob
@@ -32,7 +32,7 @@ libtommath/pretty.build
libtommath/tommath.src
libtommath/*.log
libtommath/*.pdf
-libtommath/gen.pl
+libtommath/*.pl
libtommath/*.sh
libtommath/doc/*
libtommath/tombc/*
@@ -64,4 +64,5 @@ win/*.manifest
win/pkgs/*
win/coffbase.txt
win/tcl.hpj
+win/nmakehlp.out
win/nmhlp-out.txt
diff --git a/.travis.yml b/.travis.yml
index f05a9df..ac340a6 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,4 +1,3 @@
-sudo: false
language: c
addons:
apt:
@@ -10,50 +9,46 @@ addons:
- gcc-mingw-w64-i686
- gcc-mingw-w64-x86-64
- gcc-multilib
- homebrew:
- packages:
- - libtommath
- update: true
-matrix:
+jobs:
include:
# Testing on Linux with various compilers
- name: "Linux/GCC/Shared"
os: linux
- dist: bionic
+ dist: focal
compiler: gcc
env:
- BUILD_DIR=unix
- name: "Linux/GCC/Shared: UTF_MAX=4"
os: linux
- dist: bionic
+ dist: focal
compiler: gcc
env:
- BUILD_DIR=unix
- CFGOPT=CFLAGS=-DTCL_UTF_MAX=4
- name: "Linux/GCC/Shared: NO_DEPRECATED"
os: linux
- dist: bionic
+ dist: focal
compiler: gcc
env:
- BUILD_DIR=unix
- CFGOPT="CFLAGS=-DTCL_NO_DEPRECATED=1"
- name: "Linux/GCC/Static"
os: linux
- dist: bionic
+ dist: focal
compiler: gcc
env:
- CFGOPT="--disable-shared"
- BUILD_DIR=unix
- name: "Linux/GCC/Debug"
os: linux
- dist: bionic
+ dist: focal
compiler: gcc
env:
- BUILD_DIR=unix
- CFGOPT="--enable-symbols"
- name: "Linux/GCC/Mem-Debug"
os: linux
- dist: bionic
+ dist: focal
compiler: gcc
env:
- BUILD_DIR=unix
@@ -61,7 +56,7 @@ matrix:
# C++ build.
- name: "Linux/G++/Shared"
os: linux
- dist: bionic
+ dist: focal
compiler: g++
env:
- BUILD_DIR=unix
@@ -69,7 +64,7 @@ matrix:
# Older versions of GCC...
- name: "Linux/GCC 7/Shared"
os: linux
- dist: bionic
+ dist: focal
compiler: gcc-7
addons:
apt:
@@ -106,7 +101,7 @@ matrix:
# Clang
- name: "Linux/Clang/Shared"
os: linux
- dist: bionic
+ dist: focal
compiler: clang
env:
- BUILD_DIR=unix
@@ -119,21 +114,21 @@ matrix:
- CFGOPT="CFLAGS=-DTCL_NO_DEPRECATED=1"
- name: "Linux/Clang/Static"
os: linux
- dist: bionic
+ dist: focal
compiler: clang
env:
- CFGOPT="--disable-shared"
- BUILD_DIR=unix
- name: "Linux/Clang/Debug"
os: linux
- dist: bionic
+ dist: focal
compiler: clang
env:
- BUILD_DIR=unix
- CFGOPT="--enable-symbols"
- name: "Linux/Clang/Mem-Debug"
os: linux
- dist: bionic
+ dist: focal
compiler: clang
env:
- BUILD_DIR=unix
@@ -154,6 +149,17 @@ matrix:
osx_image: xcode11.5
env:
- BUILD_DIR=unix
+ - name: "macOS/Clang/Xcode 11.5/Shared/libtommath"
+ os: osx
+ osx_image: xcode11.5
+ env:
+ - BUILD_DIR=macosx
+ install: []
+ script: *mactest
+ addons:
+ homebrew:
+ packages:
+ - libtommath
- name: "macOS/Clang++/Xcode 11.5/Shared"
os: osx
osx_image: xcode11.5
@@ -177,10 +183,6 @@ matrix:
- BUILD_DIR=macosx
install: []
script: *mactest
- addons:
- homebrew:
- packages:
- - libtommath
- name: "macOS/Clang/Xcode 9/Shared"
os: osx
osx_image: xcode9.2
@@ -188,10 +190,6 @@ matrix:
- BUILD_DIR=macosx
install: []
script: *mactest
- addons:
- homebrew:
- packages:
- - libtommath
- name: "macOS/Clang/Xcode 8/Shared"
os: osx
osx_image: xcode8.3
@@ -199,15 +197,11 @@ matrix:
- BUILD_DIR=macosx
install: []
script: *mactest
- addons:
- homebrew:
- packages:
- - libtommath
# Test with mingw-w64 cross-compile
# Doesn't run tests because wine is only an imperfect Windows emulation
- name: "Linux-cross-Windows/GCC/Shared/no test"
os: linux
- dist: bionic
+ dist: focal
compiler: x86_64-w64-mingw32-gcc
env:
- BUILD_DIR=win
@@ -221,7 +215,7 @@ matrix:
# Doesn't run tests because wine is only an imperfect Windows emulation
- name: "Linux-cross-Windows-32/GCC/Shared/no test"
os: linux
- dist: bionic
+ dist: focal
compiler: i686-w64-mingw32-gcc
env:
- BUILD_DIR=win
@@ -449,7 +443,7 @@ matrix:
# "make dist" only
- name: "Linux: make dist"
os: linux
- dist: bionic
+ dist: focal
compiler: gcc
env:
- BUILD_DIR=unix
diff --git a/generic/tclBasic.c b/generic/tclBasic.c
index 4ee2ca0..2b1bae9 100644
--- a/generic/tclBasic.c
+++ b/generic/tclBasic.c
@@ -3547,6 +3547,19 @@ Tcl_DeleteCommandFromToken(
iPtr->compileEpoch++;
}
+ if (!(cmdPtr->flags & CMD_REDEF_IN_PROGRESS)) {
+ /*
+ * Delete any imports of this routine before deleting this routine itself.
+ * See issue 688fcc7082fa.
+ */
+ for (refPtr = cmdPtr->importRefPtr; refPtr != NULL;
+ refPtr = nextRefPtr) {
+ nextRefPtr = refPtr->nextPtr;
+ importCmd = (Tcl_Command) refPtr->importedCmdPtr;
+ Tcl_DeleteCommandFromToken(interp, importCmd);
+ }
+ }
+
if (cmdPtr->deleteProc != NULL) {
/*
* Delete the command's client data. If this was an imported command
@@ -3567,20 +3580,6 @@ Tcl_DeleteCommandFromToken(
}
/*
- * If this command was imported into other namespaces, then imported
- * commands were created that refer back to this command. Delete these
- * imported commands now.
- */
- if (!(cmdPtr->flags & CMD_REDEF_IN_PROGRESS)) {
- for (refPtr = cmdPtr->importRefPtr; refPtr != NULL;
- refPtr = nextRefPtr) {
- nextRefPtr = refPtr->nextPtr;
- importCmd = (Tcl_Command) refPtr->importedCmdPtr;
- Tcl_DeleteCommandFromToken(interp, importCmd);
- }
- }
-
- /*
* Don't use hPtr to delete the hash entry here, because it's possible
* that the deletion callback renamed the command. Instead, use
* cmdPtr->hptr, and make sure that no-one else has already deleted the
diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c
index fe7cddd..f95dd12 100644
--- a/generic/tclCmdMZ.c
+++ b/generic/tclCmdMZ.c
@@ -4311,7 +4311,7 @@ Tcl_TimeRateObjCmd(
*/
measureOverhead = 0;
- Tcl_SetObjResult(interp, Tcl_NewLongObj(0));
+ Tcl_SetObjResult(interp, Tcl_NewWideIntObj(0));
return TCL_OK;
}
diff --git a/generic/tclCompExpr.c b/generic/tclCompExpr.c
index 4fb41fc..74610c7 100644
--- a/generic/tclCompExpr.c
+++ b/generic/tclCompExpr.c
@@ -2725,7 +2725,7 @@ TclVariadicOpCmd(
Tcl_Obj *const *litObjPtrPtr = litObjv;
if (lexeme == EXPON) {
- litObjv[1] = Tcl_NewIntObj(occdPtr->i.identity);
+ TclNewIntObj(litObjv[1], occdPtr->i.identity);
Tcl_IncrRefCount(litObjv[1]);
decrMe = 1;
litObjv[0] = objv[1];
@@ -2741,7 +2741,7 @@ TclVariadicOpCmd(
if (lexeme == DIVIDE) {
litObjv[0] = Tcl_NewDoubleObj(1.0);
} else {
- litObjv[0] = Tcl_NewIntObj(occdPtr->i.identity);
+ TclNewIntObj(litObjv[0], occdPtr->i.identity);
}
Tcl_IncrRefCount(litObjv[0]);
litObjv[1] = objv[1];
diff --git a/generic/tclDate.c b/generic/tclDate.c
index e9ef9bd..f8552a3 100644
--- a/generic/tclDate.c
+++ b/generic/tclDate.c
@@ -2501,12 +2501,12 @@ TclDateerror(
Tcl_AppendToObj(infoPtr->messages, infoPtr->separatrix, -1);
Tcl_AppendToObj(infoPtr->messages, s, -1);
Tcl_AppendToObj(infoPtr->messages, " (characters ", -1);
- t = Tcl_NewIntObj(location->first_column);
+ TclNewIntObj(t, location->first_column);
Tcl_IncrRefCount(t);
Tcl_AppendObjToObj(infoPtr->messages, t);
Tcl_DecrRefCount(t);
Tcl_AppendToObj(infoPtr->messages, "-", -1);
- t = Tcl_NewIntObj(location->last_column);
+ TclNewIntObj(t, location->last_column);
Tcl_IncrRefCount(t);
Tcl_AppendObjToObj(infoPtr->messages, t);
Tcl_DecrRefCount(t);
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index 4c25397..0f1c2cc 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -3635,7 +3635,7 @@ TEBCresume(
case INST_INCR_SCALAR_STK_IMM:
case INST_INCR_STK_IMM:
increment = TclGetInt1AtPtr(pc+1);
- incrPtr = Tcl_NewIntObj(increment);
+ TclNewIntObj(incrPtr, increment);
Tcl_IncrRefCount(incrPtr);
pcAdjustment = 2;
@@ -3670,7 +3670,7 @@ TEBCresume(
case INST_INCR_ARRAY1_IMM:
opnd = TclGetUInt1AtPtr(pc+1);
increment = TclGetInt1AtPtr(pc+2);
- incrPtr = Tcl_NewIntObj(increment);
+ TclNewIntObj(incrPtr, increment);
Tcl_IncrRefCount(incrPtr);
pcAdjustment = 3;
@@ -7022,7 +7022,7 @@ TEBCresume(
if (valuePtr == NULL) {
Tcl_DictObjPut(NULL, dictPtr, OBJ_AT_TOS,Tcl_NewIntObj(opnd));
} else {
- value2Ptr = Tcl_NewIntObj(opnd);
+ TclNewIntObj(value2Ptr, opnd);
Tcl_IncrRefCount(value2Ptr);
if (Tcl_IsShared(valuePtr)) {
valuePtr = Tcl_DuplicateObj(valuePtr);
diff --git a/generic/tclGetDate.y b/generic/tclGetDate.y
index c06e53a..33b23ae 100644
--- a/generic/tclGetDate.y
+++ b/generic/tclGetDate.y
@@ -716,12 +716,12 @@ TclDateerror(
Tcl_AppendToObj(infoPtr->messages, infoPtr->separatrix, -1);
Tcl_AppendToObj(infoPtr->messages, s, -1);
Tcl_AppendToObj(infoPtr->messages, " (characters ", -1);
- t = Tcl_NewIntObj(location->first_column);
+ TclNewIntObj(t, location->first_column);
Tcl_IncrRefCount(t);
Tcl_AppendObjToObj(infoPtr->messages, t);
Tcl_DecrRefCount(t);
Tcl_AppendToObj(infoPtr->messages, "-", -1);
- t = Tcl_NewIntObj(location->last_column);
+ TclNewIntObj(t, location->last_column);
Tcl_IncrRefCount(t);
Tcl_AppendObjToObj(infoPtr->messages, t);
Tcl_DecrRefCount(t);
diff --git a/generic/tclIO.c b/generic/tclIO.c
index f0d4c9e..7af6aa0 100644
--- a/generic/tclIO.c
+++ b/generic/tclIO.c
@@ -7711,7 +7711,7 @@ Tcl_BadChannelOption(
}
Tcl_ResetResult(interp);
errObj = Tcl_ObjPrintf("bad option \"%s\": should be one of ",
- optionName);
+ optionName ? optionName : "");
argc--;
for (i = 0; i < argc; i++) {
Tcl_AppendPrintfToObj(errObj, "-%s, ", argv[i]);
diff --git a/generic/tclIORChan.c b/generic/tclIORChan.c
index 8a5675a..c622afa 100644
--- a/generic/tclIORChan.c
+++ b/generic/tclIORChan.c
@@ -1365,7 +1365,7 @@ ReflectInput(
Tcl_Preserve(rcPtr);
- toReadObj = Tcl_NewIntObj(toRead);
+ TclNewIntObj(toReadObj, toRead);
Tcl_IncrRefCount(toReadObj);
if (InvokeTclMethod(rcPtr, METH_READ, toReadObj, NULL, &resObj)!=TCL_OK) {
@@ -3047,8 +3047,10 @@ ForwardProc(
}
case ForwardedInput: {
- Tcl_Obj *toReadObj = Tcl_NewIntObj(paramPtr->input.toRead);
- Tcl_IncrRefCount(toReadObj);
+ Tcl_Obj *toReadObj;
+
+ TclNewIntObj(toReadObj, paramPtr->input.toRead);
+ Tcl_IncrRefCount(toReadObj);
Tcl_Preserve(rcPtr);
if (InvokeTclMethod(rcPtr, METH_READ, toReadObj, NULL, &resObj)!=TCL_OK){
diff --git a/generic/tclInt.h b/generic/tclInt.h
index dcac9e8..3018d98 100644
--- a/generic/tclInt.h
+++ b/generic/tclInt.h
@@ -1734,7 +1734,7 @@ typedef struct Command {
#define CMD_COMPILES_EXPANDED 0x08
#define CMD_REDEF_IN_PROGRESS 0x10
#define CMD_VIA_RESOLVER 0x20
-#define CMD_DEAD 0x30
+#define CMD_DEAD 0x40
/*
diff --git a/generic/tclLink.c b/generic/tclLink.c
index 4256f84..c763218 100644
--- a/generic/tclLink.c
+++ b/generic/tclLink.c
@@ -1296,7 +1296,7 @@ ObjValue(
memcpy(linkPtr->lastValue.aryPtr, linkPtr->addr, linkPtr->bytes);
objv = (Tcl_Obj **)ckalloc(linkPtr->numElems * sizeof(Tcl_Obj *));
for (i=0; i < linkPtr->numElems; i++) {
- objv[i] = Tcl_NewIntObj(linkPtr->lastValue.iPtr[i]);
+ TclNewIntObj(objv[i], linkPtr->lastValue.iPtr[i]);
}
resultObj = Tcl_NewListObj(linkPtr->numElems, objv);
ckfree(objv);
@@ -1348,7 +1348,7 @@ ObjValue(
memcpy(linkPtr->lastValue.aryPtr, linkPtr->addr, linkPtr->bytes);
objv = (Tcl_Obj **)ckalloc(linkPtr->numElems * sizeof(Tcl_Obj *));
for (i=0; i < linkPtr->numElems; i++) {
- objv[i] = Tcl_NewIntObj(linkPtr->lastValue.cPtr[i]);
+ TclNewIntObj(objv[i], linkPtr->lastValue.cPtr[i]);
}
resultObj = Tcl_NewListObj(linkPtr->numElems, objv);
ckfree(objv);
@@ -1361,7 +1361,7 @@ ObjValue(
memcpy(linkPtr->lastValue.aryPtr, linkPtr->addr, linkPtr->bytes);
objv = (Tcl_Obj **)ckalloc(linkPtr->numElems * sizeof(Tcl_Obj *));
for (i=0; i < linkPtr->numElems; i++) {
- objv[i] = Tcl_NewIntObj(linkPtr->lastValue.ucPtr[i]);
+ TclNewIntObj(objv[i], linkPtr->lastValue.ucPtr[i]);
}
resultObj = Tcl_NewListObj(linkPtr->numElems, objv);
ckfree(objv);
@@ -1374,7 +1374,7 @@ ObjValue(
memcpy(linkPtr->lastValue.aryPtr, linkPtr->addr, linkPtr->bytes);
objv = (Tcl_Obj **)ckalloc(linkPtr->numElems * sizeof(Tcl_Obj *));
for (i=0; i < linkPtr->numElems; i++) {
- objv[i] = Tcl_NewIntObj(linkPtr->lastValue.sPtr[i]);
+ TclNewIntObj(objv[i], linkPtr->lastValue.sPtr[i]);
}
resultObj = Tcl_NewListObj(linkPtr->numElems, objv);
ckfree(objv);
@@ -1387,7 +1387,7 @@ ObjValue(
memcpy(linkPtr->lastValue.aryPtr, linkPtr->addr, linkPtr->bytes);
objv = (Tcl_Obj **)ckalloc(linkPtr->numElems * sizeof(Tcl_Obj *));
for (i=0; i < linkPtr->numElems; i++) {
- objv[i] = Tcl_NewIntObj(linkPtr->lastValue.usPtr[i]);
+ TclNewIntObj(objv[i], linkPtr->lastValue.usPtr[i]);
}
resultObj = Tcl_NewListObj(linkPtr->numElems, objv);
ckfree(objv);
diff --git a/generic/tclOOBasic.c b/generic/tclOOBasic.c
index 9f7b526..b866c2c 100644
--- a/generic/tclOOBasic.c
+++ b/generic/tclOOBasic.c
@@ -1249,7 +1249,7 @@ TclOOSelfObjCmd(
}
case SELF_CALL:
result[0] = TclOORenderCallChain(interp, contextPtr->callPtr);
- result[1] = Tcl_NewIntObj(contextPtr->index);
+ TclNewIntObj(result[1], contextPtr->index);
Tcl_SetObjResult(interp, Tcl_NewListObj(2, result));
return TCL_OK;
}
diff --git a/generic/tclPkg.c b/generic/tclPkg.c
index b39224e..bdd9a86 100644
--- a/generic/tclPkg.c
+++ b/generic/tclPkg.c
@@ -905,8 +905,9 @@ SelectPackageFinal(
}
}
} else if (result != TCL_ERROR) {
- Tcl_Obj *codePtr = Tcl_NewIntObj(result);
+ Tcl_Obj *codePtr;
+ TclNewIntObj(codePtr, result);
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
"attempt to provide package %s %s failed:"
" bad return code: %s",
diff --git a/generic/tclProcess.c b/generic/tclProcess.c
index 5bf0af8..c0f21e3 100644
--- a/generic/tclProcess.c
+++ b/generic/tclProcess.c
@@ -267,8 +267,8 @@ WaitProcessStatus(
"child process exited abnormally", -1);
if (errorObjPtr) {
errorStrings[0] = Tcl_NewStringObj("CHILDSTATUS", -1);
- errorStrings[1] = Tcl_NewIntObj(resolvedPid);
- errorStrings[2] = Tcl_NewIntObj(WEXITSTATUS(waitStatus));
+ TclNewIntObj(errorStrings[1], resolvedPid);
+ TclNewIntObj(errorStrings[2], WEXITSTATUS(waitStatus));
*errorObjPtr = Tcl_NewListObj(3, errorStrings);
}
}
@@ -286,7 +286,7 @@ WaitProcessStatus(
"child killed: %s", msg);
if (errorObjPtr) {
errorStrings[0] = Tcl_NewStringObj("CHILDKILLED", -1);
- errorStrings[1] = Tcl_NewIntObj(resolvedPid);
+ TclNewIntObj(errorStrings[1], resolvedPid);
errorStrings[2] = Tcl_NewStringObj(Tcl_SignalId(WTERMSIG(waitStatus)), -1);
errorStrings[3] = Tcl_NewStringObj(msg, -1);
*errorObjPtr = Tcl_NewListObj(4, errorStrings);
@@ -305,7 +305,7 @@ WaitProcessStatus(
"child suspended: %s", msg);
if (errorObjPtr) {
errorStrings[0] = Tcl_NewStringObj("CHILDSUSP", -1);
- errorStrings[1] = Tcl_NewIntObj(resolvedPid);
+ TclNewIntObj(errorStrings[1], resolvedPid);
errorStrings[2] = Tcl_NewStringObj(Tcl_SignalId(WSTOPSIG(waitStatus)), -1);
errorStrings[3] = Tcl_NewStringObj(msg, -1);
*errorObjPtr = Tcl_NewListObj(4, errorStrings);
@@ -326,7 +326,7 @@ WaitProcessStatus(
errorStrings[1] = Tcl_NewStringObj("OPERATION", -1);
errorStrings[2] = Tcl_NewStringObj("EXEC", -1);
errorStrings[3] = Tcl_NewStringObj("ODDWAITRESULT", -1);
- errorStrings[4] = Tcl_NewIntObj(resolvedPid);
+ TclNewIntObj(errorStrings[4], resolvedPid);
*errorObjPtr = Tcl_NewListObj(5, errorStrings);
}
return TCL_PROCESS_UNKNOWN_STATUS;
@@ -378,7 +378,7 @@ BuildProcessStatusObj(
* Abnormal exit, return {TCL_ERROR msg error}
*/
- resultObjs[0] = Tcl_NewIntObj(TCL_ERROR);
+ TclNewIntObj(resultObjs[0], TCL_ERROR);
resultObjs[1] = info->msg;
resultObjs[2] = info->error;
return Tcl_NewListObj(3, resultObjs);
diff --git a/generic/tclTrace.c b/generic/tclTrace.c
index e05fa69..9896e0e 100644
--- a/generic/tclTrace.c
+++ b/generic/tclTrace.c
@@ -1848,7 +1848,7 @@ TraceExecutionProc(
* Append result code.
*/
- resultCode = Tcl_NewIntObj(code);
+ TclNewIntObj(resultCode, code);
resultCodeStr = Tcl_GetString(resultCode);
Tcl_DStringAppendElement(&cmd, resultCodeStr);
Tcl_DecrRefCount(resultCode);
@@ -1976,7 +1976,7 @@ TraceVarProc(
int rewind = ((Interp *)interp)->execEnvPtr->rewind;
/*
- * We might call Tcl_Eval() below, and that might evaluate [trace vdelete]
+ * We might call Tcl_EvalEx() below, and that might evaluate [trace vdelete]
* which might try to free tvarPtr. We want to use tvarPtr until the end
* of this function, so we use Tcl_Preserve() and Tcl_Release() to be sure
* it is not freed while we still need it.
diff --git a/generic/tclVar.c b/generic/tclVar.c
index 72724a4..2818fc9 100644
--- a/generic/tclVar.c
+++ b/generic/tclVar.c
@@ -2322,7 +2322,7 @@ TclPtrIncrObjVarIdx(
VarHashRefCount(varPtr)--;
}
if (varValuePtr == NULL) {
- varValuePtr = Tcl_NewIntObj(0);
+ TclNewIntObj(varValuePtr, 0);
}
if (Tcl_IsShared(varValuePtr)) {
/* Copy on write */
diff --git a/tests/chanio.test b/tests/chanio.test
index 46a0c06..4e6fcc1 100644
--- a/tests/chanio.test
+++ b/tests/chanio.test
@@ -6379,12 +6379,16 @@ test chan-io-50.1 {testing handler deletion} -setup {
set f [open $path(test1) w]
chan close $f
set f [open $path(test1) r]
+ variable z not_called
+ set timer [after 50 lappend z timeout]
+ testservicemode 0
testchannelevent $f add readable [namespace code {
variable z called
testchannelevent $f delete 0
}]
- variable z not_called
- update
+ testservicemode 1
+ vwait z
+ after cancel $timer
set z
} -cleanup {
chan close $f
diff --git a/tests/event.test b/tests/event.test
index b42909c..70d4cff 100644
--- a/tests/event.test
+++ b/tests/event.test
@@ -23,11 +23,12 @@ testConstraint testfilehandler [llength [info commands testfilehandler]]
testConstraint testexithandler [llength [info commands testexithandler]]
testConstraint testfilewait [llength [info commands testfilewait]]
testConstraint exec [llength [info commands exec]]
-
+testConstraint notOSX [expr {$::tcl_platform(os) ne "Darwin"}]
+
test event-1.1 {Tcl_CreateFileHandler, reading} -setup {
testfilehandler close
set result ""
-} -constraints testfilehandler -body {
+} -constraints {testfilehandler notOSX} -body {
testfilehandler create 0 readable off
testfilehandler clear 0
testfilehandler oneevent
diff --git a/tests/io.test b/tests/io.test
index c78492b..ca37870 100644
--- a/tests/io.test
+++ b/tests/io.test
@@ -6935,7 +6935,7 @@ test io-50.5 {testing handler deletion vs reentrant calls} -constraints {testcha
} -cleanup {
close $f
} -result [list {del calling recursive} {del deleted notcalled} \
- {del deleted myself} {del after recursive}]
+ {del deleted myself} {del after recursive}]
test io-50.6 {testing handler deletion vs reentrant calls} -constraints {testchannelevent testservicemode} -setup {
file delete $path(test1)
} -body {
@@ -6944,6 +6944,7 @@ test io-50.6 {testing handler deletion vs reentrant calls} -constraints {testcha
proc first {f} {
variable u
variable z
+ variable done
if {"$u" == "toplevel"} {
lappend z "first called"
set u first
@@ -6951,6 +6952,7 @@ test io-50.6 {testing handler deletion vs reentrant calls} -constraints {testcha
vwait z
after cancel $timer
lappend z "first after toplevel"
+ set done 1
} else {
lappend z "first called not toplevel"
}
@@ -6972,19 +6974,24 @@ test io-50.6 {testing handler deletion vs reentrant calls} -constraints {testcha
}
set z ""
set u toplevel
+ set done 0
testservicemode 0
set f [open $path(test1) r]
testchannelevent $f add readable [namespace code [list second $f]]
testchannelevent $f add readable [namespace code [list first $f]]
testservicemode 1
update
+ if {!$done} {
+ set timer2 [after 200 set done 1]
+ vwait done
+ after cancel $timer2
+ }
set z
} -cleanup {
close $f
} -result [list {first called} {first called not toplevel} \
{second called, first time} {second called, second time} \
{first after toplevel}]
-
test io-51.1 {Test old socket deletion on Macintosh} {socket} {
set x 0
set result ""
diff --git a/win/nmakehlp.c b/win/nmakehlp.c
index fac32ee..7536ede 100644
--- a/win/nmakehlp.c
+++ b/win/nmakehlp.c
@@ -708,7 +708,7 @@ QualifyPath(
{
char szCwd[MAX_PATH + 1];
- GetFullPathName(szPath, sizeof(szCwd)-1, szCwd, NULL);
+ GetFullPathName(szPath, sizeof(szCwd)-1, szCwd, NULL);
printf("%s\n", szCwd);
return 0;
}
diff --git a/win/tclWinConsole.c b/win/tclWinConsole.c
index 8b1b2da..3b8753b 100644
--- a/win/tclWinConsole.c
+++ b/win/tclWinConsole.c
@@ -1527,11 +1527,14 @@ ConsoleSetOptionProc(
} else {
infoPtr->flags |= CONSOLE_RESET;
}
- } else if (len > 0) {
- return Tcl_BadChannelOption(interp, optionName,
- (infoPtr->flags & CONSOLE_READ_OPS) ? "inputmode" : "");
+ return TCL_OK;
+ }
+
+ if (infoPtr->flags & CONSOLE_READ_OPS) {
+ return Tcl_BadChannelOption(interp, optionName, "inputmode");
+ } else {
+ return Tcl_BadChannelOption(interp, optionName, "");
}
- return TCL_OK;
}
/*
diff --git a/win/tclWinPort.h b/win/tclWinPort.h
index 1aaf21d..bf4553c 100644
--- a/win/tclWinPort.h
+++ b/win/tclWinPort.h
@@ -49,7 +49,9 @@ typedef DWORD_PTR * PDWORD_PTR;
/*
* Ask for the winsock function typedefs, also.
*/
-#define INCL_WINSOCK_API_TYPEDEFS 1
+#ifndef INCL_WINSOCK_API_TYPEDEFS
+# define INCL_WINSOCK_API_TYPEDEFS 1
+#endif
#include <winsock2.h>
#include <ws2tcpip.h>
#ifdef HAVE_WSPIAPI_H