summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--changes127
-rw-r--r--doc/Encoding.32
-rw-r--r--doc/info.n2
-rw-r--r--generic/regc_locale.c3
-rw-r--r--generic/tcl.decls273
-rw-r--r--generic/tclBinary.c19
-rw-r--r--generic/tclCompCmdsSZ.c2
-rw-r--r--generic/tclDecls.h8
-rw-r--r--generic/tclIOUtil.c17
-rw-r--r--generic/tclInt.decls75
-rw-r--r--generic/tclTomMath.decls59
-rw-r--r--generic/tclUtf.c2
-rw-r--r--library/clock.tcl13
-rw-r--r--library/msgcat/msgcat.tcl45
-rw-r--r--win/tclWinPipe.c2
15 files changed, 191 insertions, 458 deletions
diff --git a/changes b/changes
index 5afd2f4..49d7923 100644
--- a/changes
+++ b/changes
@@ -9460,3 +9460,130 @@ Update bundled libtommath
Many code fixes to avoid overflow or undefined behavior. Thanks chrstphrchvz.
- Released 8.6.13, Nov 22, 2022 - details at https://core.tcl-lang.org/tcl/ -
+
+2022-12-01 Backport TIP #402: path name starting with '//' not
+ replaced by '/' also on Cygwin and QNX (nijtmans)
+
+2022-12-12 Windows binaries licence metadata changed to University of
+ California to match licence (nadkarni)
+
+2022-12-16 check mknod, tcdrain and uname in build script for VxWorks or others
+ (nijtmans)
+
+2022-12-16 32-bit cygwin is dead, so --enable-64bit in a Cygwin build no longer
+ needed (nijtmans)
+
+2023-01-01 (bug)[8e811b] Wrong formatting of arguments in man page (nijtmans)
+
+2023-01-06 (bug) [0f19ed]: Windows 11 not reported in tcl_platform(osVersion)
+ (nijtmans)
+
+2023-01-15 (bug) [8f7fde] string compare failing on big endian (coulter)
+
+2023-01-22 (bug) [3e8074] y2k38 problem in [interp limit time -seconds]
+ (nijtmans)
+
+2023-01-22 (bug) [e3dcab] crash with tcl_precision equal 15..18 (kenny)
+
+2023-02-22 (bug) [d19fe0] output replacement character on incomplete sequences
+ in unicode encoding (nijtmans)
+
+2023-02-22 (bug) [534172] sporadic crash in memchan thread cleanup.
+ (neumann,nijtmans)
+
+2023-02-28 (bug) [f9eafc] throw error in zip command when file comment/filename
+ to long or not iso-latin-1 (nijtmans)
+
+2023-03-04 (bug) [1b8df1] fix usec on windows returned by Tcl_GetTime (nadkarni)
+
+2023-03-05 (bug) [9c5a00]. Fix ~ and ~user path prefix on Windows (nadkarni)
+
+2023-03-13 (bug)[183a1a] Prevent BO by Tcl_UtfToExternal (nadkarni)
+
+2023-03-14 (bug) [ea69b0], crash when using a channel transformation on TCP
+ client socket (coulter)
+
+2023-03-22 (bug)[026575] Prevent invalid read in Tcl_UtfToUniChar (nijtmans)
+
+2023-03-30 (rfe) Allow empty mode in [chan create] to allow refchan version of
+ [socket -server] (max)
+
+2023-03-30 [0cb355] macOS 13 SDK deprecates sprintf() (chavez)
+
+2023-05-02 (bug) [ab123c] argument position overflow in [scan %num$mode]
+ (nadkarni)
+
+2023-05-02 (bug) [784bef] tailcall crash (nadkarni)
+
+2023-06-03 (bug) [af3ebc] clock scan and clock add bugs in error cases / with
+ abbreviated options (ade)
+
+2023-07-05 (bug) [66ffaf] incomplete double byte encoding sequences ignored like
+ in [encoding convertfrom gb12345 x] (nadkarni)
+
+2023-07-26 (rfe) [c54e4a] fork multithreading performance by using vfork/spawn
+ when supported (neumann)
+
+2023-08-29 Update zlib to version 1.3 (nijtmans)
+
+2023-09-04 Update libtommath to version 1.2.1 (nijtmans)
+
+2023-09-05 (bug) [60cacf] Fix tclvfs tkt Segmentation Fault at interpreter exit
+ when tclvfs loaded.
+2023-09-05 (bug) [b5ac3e] Tcl_GetUniChar reads beyond string length for ASCII
+ strings (nadkarni)
+
+2023-09-06 (bug) [d3465c] Update install-sh to version 2020-11-14.01 (nijtmans)
+
+2023-09-08 Unicode 15.1 (nijtmans)
+
+2023-09-12 Remove option utf16 from win/makefile.vc (nijtmans)
+
+2023-09-13 (bug) [43b065] MS Windows: files with emojis are found by glob but
+ not recognized by file exists or open (nijtmans)
+
+2023-09-13 (bug) [a1f11d] VC6 compilation error of core-8-6-branch: error C2065:
+ 'int16_t' : undeclared identifier (nijtmans)
+
+2023-09-14 (bug) [00655c] ClockGetdatefieldsObjCmd(): avoid signed integer
+ overflow and platform-dependent behavior (nijtmans)
+
+2023-09-28 TIP #662: Tcl_VarEval is not depreciated any more (nijtmans)
+
+2023-10-01 (bug) [7b3167] tclOO.c: initialize fakeObject.refCount (nijtmans)
+
+2023-10-04 (bug) [7371b6] AddressSanitizer use-after-return detection breaks NRE
+ tests, coroutines (nijtmans)
+
+2023-11-20 (bug)[32b889] prevent spurious errors from [clock format] (gahr)
+
+2023-11-30 (bug) [fb2fa9],[21b062] reallow [exec %var%] on MS-Windows. It was
+ forbidden in 8.6.13 (brester)
+
+2023-12-30 (rfe) [0ac9d0] Don't call getsockname(2) in Tcl_MakeFileChannel(3)
+ unless absolutely necessary. Permits better constraining of Tcl/tclsh
+ via OpenBSD's pledge(2) or similar mechanisms. Minor rewrite.
+
+2024-01-09 (feature) Adapt tcltest to support Tcl 9.
+=> tcltest 2.5.7
+
+2024-01-11 (bug) [fd27ad] doc change of Tcl_PkgRequire & friends: version string
+ specification refers to "package require".
+
+2024-01-27 (bug) [16e25e] error for [tcl_startOfPreviousWord string end-1]
+ (nijtmans)
+
+2024-01-29 Update to zlib 1.3.1 (nijtmans)
+
+2024-01-29 [db4f28] segfault when Tcl_ReadChars is called with unicode object
+ (brester)
+
+2024-02-04 tzdata updated to Olson's tzdata2024a (nijtmans)
+
+2024-02-05 fix/document Tcl_ObjPrintf with "ll" modifier (nijtmans)
+
+2024-02-06 [8e666d] endless loop when redefining proc ::history (nash)
+
+2024-02-06 [86b3c1] endless loop when ::unknown is moved into a namespace (nash)
+
+- Released 8.6.14, Feb 28, 2024 - details at https://core.tcl-lang.org/tcl/ -
diff --git a/doc/Encoding.3 b/doc/Encoding.3
index 9e5ae06..45398f3 100644
--- a/doc/Encoding.3
+++ b/doc/Encoding.3
@@ -253,7 +253,7 @@ the unconverted bytes that remained in \fIsrc\fR plus some further bytes
from the source stream to properly convert the formerly split-up multibyte
sequence.
.IP \fBTCL_CONVERT_SYNTAX\fR 29
-The source buffer contained an invalid byte or character sequence. This may
+The source buffer contained an invalid byte or character sequence. This may
occur if the input stream has been damaged or if the input encoding method was
misidentified.
.IP \fBTCL_CONVERT_UNKNOWN\fR 29
diff --git a/doc/info.n b/doc/info.n
index 96c0375..2b3283c 100644
--- a/doc/info.n
+++ b/doc/info.n
@@ -358,7 +358,7 @@ Other components identify a namespace. See \fBNAMESPACE RESOLUTION\fR in the
results are fully qualified.
.RS
.PP
-A variable that has been declared but not yet given a value will be included in
+A variable that has been declared but not yet given a value will be included in
the results.
.RE
.SS "CLASS INTROSPECTION"
diff --git a/generic/regc_locale.c b/generic/regc_locale.c
index 177c2b9..b6687f3 100644
--- a/generic/regc_locale.c
+++ b/generic/regc_locale.c
@@ -1101,9 +1101,8 @@ cclass(
addchr(cv, ' ');
break;
case CC_CNTRL:
- cv = getcvec(v, NUM_CONTROL_CHAR, NUM_CONTROL_RANGE+1);
+ cv = getcvec(v, NUM_CONTROL_CHAR, NUM_CONTROL_RANGE);
if (cv) {
- addrange(cv, 0xE000, 0xF8FF); /* private */
for (i=0 ; i<NUM_CONTROL_RANGE ; i++) {
addrange(cv, controlRangeTable[i].start,
controlRangeTable[i].end);
diff --git a/generic/tcl.decls b/generic/tcl.decls
index b8e1e1f..5f82a1c 100644
--- a/generic/tcl.decls
+++ b/generic/tcl.decls
@@ -104,10 +104,6 @@ declare 20 {
declare 21 {
int Tcl_DbIsShared(Tcl_Obj *objPtr, const char *file, int line)
}
-# Removed in 9.0 (changed to macro):
-#declare 22 {
-# Tcl_Obj *Tcl_DbNewBooleanObj(int intValue, const char *file, int line)
-#}
declare 23 {
Tcl_Obj *Tcl_DbNewByteArrayObj(const unsigned char *bytes,
Tcl_Size numBytes, const char *file, int line)
@@ -120,10 +116,6 @@ declare 25 {
Tcl_Obj *Tcl_DbNewListObj(Tcl_Size objc, Tcl_Obj *const *objv,
const char *file, int line)
}
-# Removed in 9.0 (changed to macro):
-#declare 26 {
-# Tcl_Obj *Tcl_DbNewLongObj(long longValue, const char *file, int line)
-#}
declare 27 {
Tcl_Obj *Tcl_DbNewObj(const char *file, int line)
}
@@ -155,11 +147,6 @@ declare 35 {
int Tcl_GetDoubleFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr,
double *doublePtr)
}
-# Removed in 9.0, replaced by macro.
-#declare 36 {
-# int Tcl_GetIndexFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr,
-# const char *const *tablePtr, const char *msg, int flags, int *indexPtr)
-#}
declare 37 {
int Tcl_GetInt(Tcl_Interp *interp, const char *src, int *intPtr)
}
@@ -202,37 +189,21 @@ declare 48 {
int Tcl_ListObjReplace(Tcl_Interp *interp, Tcl_Obj *listPtr, Tcl_Size first,
Tcl_Size count, Tcl_Size objc, Tcl_Obj *const objv[])
}
-# Removed in 9.0 (changed to macro):
-#declare 49 {
-# Tcl_Obj *Tcl_NewBooleanObj(int intValue)
-#}
declare 50 {
Tcl_Obj *Tcl_NewByteArrayObj(const unsigned char *bytes, Tcl_Size numBytes)
}
declare 51 {
Tcl_Obj *Tcl_NewDoubleObj(double doubleValue)
}
-# Removed in 9.0 (changed to macro):
-#declare 52 {
-# Tcl_Obj *Tcl_NewIntObj(int intValue)
-#}
declare 53 {
Tcl_Obj *Tcl_NewListObj(Tcl_Size objc, Tcl_Obj *const objv[])
}
-# Removed in 9.0 (changed to macro):
-#declare 54 {
-# Tcl_Obj *Tcl_NewLongObj(long longValue)
-#}
declare 55 {
Tcl_Obj *Tcl_NewObj(void)
}
declare 56 {
Tcl_Obj *Tcl_NewStringObj(const char *bytes, Tcl_Size length)
}
-# Removed in 9.0 (changed to macro):
-#declare 57 {
-# void Tcl_SetBooleanObj(Tcl_Obj *objPtr, int intValue)
-#}
declare 58 {
unsigned char *Tcl_SetByteArrayLength(Tcl_Obj *objPtr, Tcl_Size numBytes)
}
@@ -243,32 +214,15 @@ declare 59 {
declare 60 {
void Tcl_SetDoubleObj(Tcl_Obj *objPtr, double doubleValue)
}
-# Removed in 9.0 (changed to macro):
-#declare 61 {
-# void Tcl_SetIntObj(Tcl_Obj *objPtr, int intValue)
-#}
declare 62 {
void Tcl_SetListObj(Tcl_Obj *objPtr, Tcl_Size objc, Tcl_Obj *const objv[])
}
-# Removed in 9.0 (changed to macro):
-#declare 63 {
-# void Tcl_SetLongObj(Tcl_Obj *objPtr, long longValue)
-#}
declare 64 {
void Tcl_SetObjLength(Tcl_Obj *objPtr, Tcl_Size length)
}
declare 65 {
void Tcl_SetStringObj(Tcl_Obj *objPtr, const char *bytes, Tcl_Size length)
}
-# Removed in 9.0, replaced by macro.
-#declare 66 {
-# void Tcl_AddErrorInfo(Tcl_Interp *interp, const char *message)
-#}
-# Removed in 9.0, replaced by macro.
-#declare 67 {
-# void Tcl_AddObjErrorInfo(Tcl_Interp *interp, const char *message,
-# Tcl_Size length)
-#}
declare 68 {
void Tcl_AllowExceptions(Tcl_Interp *interp)
}
@@ -294,14 +248,6 @@ declare 74 {
declare 75 {
int Tcl_AsyncReady(void)
}
-# Removed in 9.0
-#declare 76 {
-# void Tcl_BackgroundError(Tcl_Interp *interp)
-#}
-# Removed in 9.0:
-#declare 77 {
-# char Tcl_Backslash(const char *src, int *readPtr)
-#}
declare 78 {
int Tcl_BadChannelOption(Tcl_Interp *interp, const char *optionName,
const char *optionList)
@@ -367,12 +313,6 @@ declare 93 {
declare 94 {
Tcl_Interp *Tcl_CreateInterp(void)
}
-# Removed in 9.0:
-#declare 95 {
-# void Tcl_CreateMathFunc(Tcl_Interp *interp, const char *name,
-# int numArgs, Tcl_ValueType *argTypes,
-# Tcl_MathProc *proc, void *clientData)
-#}
declare 96 {
Tcl_Command Tcl_CreateObjCommand(Tcl_Interp *interp,
const char *cmdName,
@@ -482,17 +422,9 @@ declare 127 {
declare 128 {
const char *Tcl_ErrnoMsg(int err)
}
-# Removed in 9.0, replaced by macro.
-#declare 129 {
-# int Tcl_Eval(Tcl_Interp *interp, const char *script)
-#}
declare 130 {
int Tcl_EvalFile(Tcl_Interp *interp, const char *fileName)
}
-# Removed in 9.0, replaced by macro.
-#declare 131 {
-# int Tcl_EvalObj(Tcl_Interp *interp, Tcl_Obj *objPtr)
-#}
declare 132 {
void Tcl_EventuallyFree(void *clientData, Tcl_FreeProc *freeProc)
}
@@ -531,10 +463,6 @@ declare 142 {
declare 143 {
void Tcl_Finalize(void)
}
-# Removed in 9.0 (stub entry only)
-#declare 144 {
-# const char *Tcl_FindExecutable(const char *argv0)
-#}
declare 145 {
Tcl_HashEntry *Tcl_FirstHashEntry(Tcl_HashTable *tablePtr,
Tcl_HashSearch *searchPtr)
@@ -542,10 +470,6 @@ declare 145 {
declare 146 {
int Tcl_Flush(Tcl_Channel chan)
}
-# Removed in 9.0, TIP 559
-#declare 147 {
-# void Tcl_FreeResult(Tcl_Interp *interp)
-#}
declare 148 {
int Tcl_GetAlias(Tcl_Interp *interp, const char *childCmd,
Tcl_Interp **targetInterpPtr, const char **targetCmdPtr,
@@ -641,27 +565,10 @@ declare 172 {
declare 173 {
Tcl_Channel Tcl_GetStdChannel(int type)
}
-# Removed in 9.0, replaced by macro.
-#declare 174 {
-# const char *Tcl_GetStringResult(Tcl_Interp *interp)
-#}
-# Removed in 9.0, replaced by macro.
-#declare 175 {
-# const char *Tcl_GetVar(Tcl_Interp *interp, const char *varName,
-# int flags)
-#}
declare 176 {
const char *Tcl_GetVar2(Tcl_Interp *interp, const char *part1,
const char *part2, int flags)
}
-# Removed in 9.0, replaced by macro.
-#declare 177 {
-# int Tcl_GlobalEval(Tcl_Interp *interp, const char *command)
-#}
-# Removed in 9.0, replaced by macro.
-#declare 178 {
-# int Tcl_GlobalEvalObj(Tcl_Interp *interp, Tcl_Obj *objPtr)
-#}
declare 179 {
int Tcl_HideCommand(Tcl_Interp *interp, const char *cmdName,
const char *hiddenCmdToken)
@@ -702,10 +609,6 @@ declare 187 {
declare 189 {
Tcl_Channel Tcl_MakeFileChannel(void *handle, int mode)
}
-# Removed in 9.0
-#declare 190 {
-# int Tcl_MakeSafe(Tcl_Interp *interp)
-#}
declare 191 {
Tcl_Channel Tcl_MakeTcpClientChannel(void *tcpSocket)
}
@@ -804,10 +707,6 @@ declare 218 {
declare 219 {
Tcl_Size Tcl_ScanCountedElement(const char *src, Tcl_Size length, int *flagPtr)
}
-# Removed in 9.0:
-#declare 220 {
-# int Tcl_SeekOld(Tcl_Channel chan, int offset, int mode)
-#}
declare 221 {
int Tcl_ServiceAll(void)
}
@@ -838,18 +737,9 @@ declare 228 {
declare 229 {
void Tcl_SetMaxBlockTime(const Tcl_Time *timePtr)
}
-# Removed in 9.0 (stub entry only)
-#declare 230 {
-# const char *Tcl_SetPanicProc(TCL_NORETURN1 Tcl_PanicProc *panicProc)
-#}
declare 231 {
Tcl_Size Tcl_SetRecursionLimit(Tcl_Interp *interp, Tcl_Size depth)
}
-# Removed in 9.0, replaced by macro.
-#declare 232 {
-# void Tcl_SetResult(Tcl_Interp *interp, char *result,
-# Tcl_FreeProc *freeProc)
-#}
declare 233 {
int Tcl_SetServiceMode(int mode)
}
@@ -862,11 +752,6 @@ declare 235 {
declare 236 {
void Tcl_SetStdChannel(Tcl_Channel channel, int type)
}
-# Removed in 9.0, replaced by macro.
-#declare 237 {
-# const char *Tcl_SetVar(Tcl_Interp *interp, const char *varName,
-# const char *newValue, int flags)
-#}
declare 238 {
const char *Tcl_SetVar2(Tcl_Interp *interp, const char *part1,
const char *part2, const char *newValue, int flags)
@@ -888,24 +773,6 @@ declare 242 {
declare 243 {
void TclSplitPath(const char *path, void *argcPtr, const char ***argvPtr)
}
-# Removed in 9.0 (stub entry only)
-#declare 244 {
-# void Tcl_StaticLibrary(Tcl_Interp *interp, const char *prefix,
-# Tcl_LibraryInitProc *initProc, Tcl_LibraryInitProc *safeInitProc)
-#}
-# Removed in 9.0 (stub entry only)
-#declare 245 {
-# int Tcl_StringMatch(const char *str, const char *pattern)
-#}
-# Removed in 9.0:
-#declare 246 {
-# int Tcl_TellOld(Tcl_Channel chan)
-#}
-# Removed in 9.0, replaced by macro.
-#declare 247 {
-# int Tcl_TraceVar(Tcl_Interp *interp, const char *varName, int flags,
-# Tcl_VarTraceProc *proc, void *clientData)
-#}
declare 248 {
int Tcl_TraceVar2(Tcl_Interp *interp, const char *part1, const char *part2,
int flags, Tcl_VarTraceProc *proc, void *clientData)
@@ -923,19 +790,10 @@ declare 251 {
declare 252 {
int Tcl_UnregisterChannel(Tcl_Interp *interp, Tcl_Channel chan)
}
-# Removed in 9.0, replaced by macro.
-#declare 253 {
-# int Tcl_UnsetVar(Tcl_Interp *interp, const char *varName, int flags)
-#}
declare 254 {
int Tcl_UnsetVar2(Tcl_Interp *interp, const char *part1, const char *part2,
int flags)
}
-# Removed in 9.0, replaced by macro.
-#declare 255 {
-# void Tcl_UntraceVar(Tcl_Interp *interp, const char *varName, int flags,
-# Tcl_VarTraceProc *proc, void *clientData)
-#}
declare 256 {
void Tcl_UntraceVar2(Tcl_Interp *interp, const char *part1,
const char *part2, int flags, Tcl_VarTraceProc *proc,
@@ -944,11 +802,6 @@ declare 256 {
declare 257 {
void Tcl_UpdateLinkedVar(Tcl_Interp *interp, const char *varName)
}
-# Removed in 9.0, replaced by macro.
-#declare 258 {
-# int Tcl_UpVar(Tcl_Interp *interp, const char *frameName,
-# const char *varName, const char *localName, int flags)
-#}
declare 259 {
int Tcl_UpVar2(Tcl_Interp *interp, const char *frameName, const char *part1,
const char *part2, const char *localName, int flags)
@@ -956,11 +809,6 @@ declare 259 {
declare 260 {
int Tcl_VarEval(Tcl_Interp *interp, ...)
}
-# Removed in 9.0, replaced by macro.
-#declare 261 {
-# void *Tcl_VarTraceInfo(Tcl_Interp *interp, const char *varName,
-# int flags, Tcl_VarTraceProc *procPtr, void *prevClientData)
-#}
declare 262 {
void *Tcl_VarTraceInfo2(Tcl_Interp *interp, const char *part1,
const char *part2, int flags, Tcl_VarTraceProc *procPtr,
@@ -979,14 +827,6 @@ declare 265 {
declare 266 {
void Tcl_ValidateAllMemory(const char *file, int line)
}
-# Removed in 9.0:
-#declare 267 {
-# void Tcl_AppendResultVA(Tcl_Interp *interp, va_list argList)
-#}
-# Removed in 9.0:
-#declare 268 {
-# void Tcl_AppendStringsToObjVA(Tcl_Obj *objPtr, va_list argList)
-#}
declare 269 {
char *Tcl_HashStats(Tcl_HashTable *tablePtr)
}
@@ -994,42 +834,14 @@ declare 270 {
const char *Tcl_ParseVar(Tcl_Interp *interp, const char *start,
const char **termPtr)
}
-# Removed in 9.0, replaced by macro.
-#declare 271 {
-# const char *Tcl_PkgPresent(Tcl_Interp *interp, const char *name,
-# const char *version, int exact)
-#}
declare 272 {
const char *Tcl_PkgPresentEx(Tcl_Interp *interp,
const char *name, const char *version, int exact,
void *clientDataPtr)
}
-# Removed in 9.0, replaced by macro.
-#declare 273 {
-# int Tcl_PkgProvide(Tcl_Interp *interp, const char *name,
-# const char *version)
-#}
-# TIP #268: The internally used new Require function is in slot 573.
-# Removed in 9.0, replaced by macro.
-#declare 274 {
-# const char *Tcl_PkgRequire(Tcl_Interp *interp, const char *name,
-# const char *version, int exact)
-#}
-# Removed in 9.0:
-#declare 275 {
-# void Tcl_SetErrorCodeVA(Tcl_Interp *interp, va_list argList)
-#}
-# Removed in 9.0:
-#declare 276 {
-# int Tcl_VarEvalVA(Tcl_Interp *interp, va_list argList)
-#}
declare 277 {
Tcl_Pid Tcl_WaitPid(Tcl_Pid pid, int *statPtr, int options)
}
-# Removed in 9.0:
-#declare 278 {
-# TCL_NORETURN void Tcl_PanicVA(const char *format, va_list argList)
-#}
declare 279 {
void Tcl_GetVersion(int *major, int *minor, int *patchLevel, int *type)
}
@@ -1086,10 +898,6 @@ declare 288 {
declare 289 {
void Tcl_DeleteThreadExitHandler(Tcl_ExitProc *proc, void *clientData)
}
-# Removed in 9.0
-#declare 290 {
-# void Tcl_DiscardResult(Tcl_SavedResult *statePtr)
-#}
declare 291 {
int Tcl_EvalEx(Tcl_Interp *interp, const char *script, Tcl_Size numBytes,
int flags)
@@ -1170,14 +978,6 @@ declare 313 {
Tcl_Size Tcl_ReadChars(Tcl_Channel channel, Tcl_Obj *objPtr,
Tcl_Size charsToRead, int appendFlag)
}
-# Removed in 9.0
-#declare 314 {
-# void Tcl_RestoreResult(Tcl_Interp *interp, Tcl_SavedResult *statePtr)
-#}
-# Removed in 9.0
-#declare 315 {
-# void Tcl_SaveResult(Tcl_Interp *interp, Tcl_SavedResult *statePtr)
-#}
declare 316 {
int Tcl_SetSystemEncoding(Tcl_Interp *interp, const char *name)
}
@@ -1259,14 +1059,6 @@ declare 339 {
declare 340 {
char *Tcl_GetString(Tcl_Obj *objPtr)
}
-# Removed in 9.0:
-#declare 341 {
-# const char *Tcl_GetDefaultEncodingDir(void)
-#}
-# Removed in 9.0:
-#declare 342 {
-# void Tcl_SetDefaultEncodingDir(const char *path)
-#}
declare 343 {
void Tcl_AlertNotifier(void *clientData)
}
@@ -1297,11 +1089,6 @@ declare 351 {
declare 352 {
Tcl_Size Tcl_Char16Len(const unsigned short *uniStr)
}
-# Removed in 9.0:
-#declare 353 {
-# int Tcl_UniCharNcmp(const Tcl_UniChar *ucs, const Tcl_UniChar *uct,
-# unsigned long numChars)
-#}
declare 354 {
char *Tcl_Char16ToUtfDString(const unsigned short *uniStr,
Tcl_Size uniLength, Tcl_DString *dsPtr)
@@ -1314,11 +1101,6 @@ declare 356 {
Tcl_RegExp Tcl_GetRegExpFromObj(Tcl_Interp *interp, Tcl_Obj *patObj,
int flags)
}
-# Removed in 9.0:
-#declare 357 {
-# Tcl_Obj *Tcl_EvalTokens(Tcl_Interp *interp, Tcl_Token *tokenPtr,
-# Tcl_Size count)
-#}
declare 358 {
void Tcl_FreeParse(Tcl_Parse *parsePtr)
}
@@ -1403,10 +1185,6 @@ declare 380 {
declare 381 {
int TclGetUniChar(Tcl_Obj *objPtr, Tcl_Size index)
}
-# Removed in 9.0, replaced by macro.
-#declare 382 {
-# Tcl_UniChar *Tcl_GetUnicode(Tcl_Obj *objPtr)
-#}
declare 383 {
Tcl_Obj *TclGetRange(Tcl_Obj *objPtr, Tcl_Size first, Tcl_Size last)
}
@@ -1469,11 +1247,6 @@ declare 400 {
Tcl_DriverBlockModeProc *Tcl_ChannelBlockModeProc(
const Tcl_ChannelType *chanTypePtr)
}
-# Removed in 9.0
-#declare 401 {
-# Tcl_DriverCloseProc *Tcl_ChannelCloseProc(
-# const Tcl_ChannelType *chanTypePtr)
-#}
declare 402 {
Tcl_DriverClose2Proc *Tcl_ChannelClose2Proc(
const Tcl_ChannelType *chanTypePtr)
@@ -1486,11 +1259,6 @@ declare 404 {
Tcl_DriverOutputProc *Tcl_ChannelOutputProc(
const Tcl_ChannelType *chanTypePtr)
}
-# Removed in 9.0
-#declare 405 {
-# Tcl_DriverSeekProc *Tcl_ChannelSeekProc(
-# const Tcl_ChannelType *chanTypePtr)
-#}
declare 406 {
Tcl_DriverSetOptionProc *Tcl_ChannelSetOptionProc(
const Tcl_ChannelType *chanTypePtr)
@@ -1538,25 +1306,6 @@ declare 417 {
declare 418 {
int Tcl_IsChannelExisting(const char *channelName)
}
-# Removed in 9.0:
-#declare 419 {
-# int Tcl_UniCharNcasecmp(const Tcl_UniChar *ucs, const Tcl_UniChar *uct,
-# unsigned long numChars)
-#}
-# Removed in 9.0:
-#declare 420 {
-# int Tcl_UniCharCaseMatch(const Tcl_UniChar *uniStr,
-# const Tcl_UniChar *uniPattern, int nocase)
-#}
-# Removed in 9.0, as it is actually a macro:
-#declare 421 {
-# Tcl_HashEntry *Tcl_FindHashEntry(Tcl_HashTable *tablePtr, const void *key)
-#}
-# Removed in 9.0, as it is actually a macro:
-#declare 422 {
-# Tcl_HashEntry *Tcl_CreateHashEntry(Tcl_HashTable *tablePtr,
-# const void *key, int *newPtr)
-#}
declare 423 {
void Tcl_InitCustomHashTable(Tcl_HashTable *tablePtr, int keyType,
const Tcl_HashKeyType *typePtr)
@@ -1604,18 +1353,6 @@ declare 434 {
Tcl_UniChar *TclGetUnicodeFromObj(Tcl_Obj *objPtr, void *lengthPtr)
}
-# TIP#15 (math function introspection) dkf
-# Removed in 9.0:
-#declare 435 {
-# int Tcl_GetMathFuncInfo(Tcl_Interp *interp, const char *name,
-# int *numArgsPtr, Tcl_ValueType **argTypesPtr,
-# Tcl_MathProc **procPtr, void **clientDataPtr)
-#}
-# Removed in 9.0:
-#declare 436 {
-# Tcl_Obj *Tcl_ListMathFuncs(Tcl_Interp *interp, const char *pattern)
-#}
-
# TIP#36 (better access to 'subst') dkf
declare 437 {
Tcl_Obj *Tcl_SubstObj(Tcl_Interp *interp, Tcl_Obj *objPtr, int flags)
@@ -1929,11 +1666,6 @@ declare 518 {
const char *encodingName)
}
-# Removed in 9.0 (stub entry only)
-#declare 519 {nostub {Don't use this function in a stub-enabled extension}} {
-# Tcl_ExitProc *Tcl_SetExitProc(TCL_NORETURN1 Tcl_ExitProc *proc)
-#}
-
# TIP#143 (resource limits) dkf
declare 520 {
void Tcl_LimitAddHandler(Tcl_Interp *interp, int type,
@@ -2499,11 +2231,6 @@ declare 655 {
declare 656 {
const char *Tcl_UtfPrev(const char *src, const char *start)
}
-# Removed by TIP #652
-#
-#declare 657 {
-# int Tcl_UniCharIsUnicode(int ch)
-#}
# TIP 656
declare 658 {
diff --git a/generic/tclBinary.c b/generic/tclBinary.c
index 429f7c1..314e9fd 100644
--- a/generic/tclBinary.c
+++ b/generic/tclBinary.c
@@ -208,7 +208,7 @@ TclIsPureByteArray(
* from the given array of bytes.
*
* Results:
- * The newly create object is returned. This object will have no initial
+ * The newly created object is returned. This object has no initial
* string representation. The returned object has a ref count of 0.
*
* Side effects:
@@ -223,7 +223,8 @@ Tcl_Obj *
Tcl_NewByteArrayObj(
const unsigned char *bytes, /* The array of bytes used to initialize the
* new object. */
- Tcl_Size numBytes) /* Number of bytes in the array */
+ Tcl_Size numBytes) /* Number of bytes in the array,
+ * must be >= 0. */
{
#ifdef TCL_MEM_DEBUG
return Tcl_DbNewByteArrayObj(bytes, numBytes, "unknown", 0);
@@ -266,7 +267,8 @@ Tcl_Obj *
Tcl_DbNewByteArrayObj(
const unsigned char *bytes, /* The array of bytes used to initialize the
* new object. */
- Tcl_Size numBytes, /* Number of bytes in the array */
+ Tcl_Size numBytes, /* Number of bytes in the array,
+ * must be >= 0. */
const char *file, /* The name of the source file calling this
* procedure; used for debugging. */
int line) /* Line number in the source file; used for
@@ -283,7 +285,8 @@ Tcl_Obj *
Tcl_DbNewByteArrayObj(
const unsigned char *bytes, /* The array of bytes used to initialize the
* new object. */
- Tcl_Size numBytes, /* Number of bytes in the array */
+ Tcl_Size numBytes, /* Number of bytes in the array,
+ * must be >= 0. */
TCL_UNUSED(const char *) /*file*/,
TCL_UNUSED(int) /*line*/)
{
@@ -314,8 +317,8 @@ Tcl_SetByteArrayObj(
Tcl_Obj *objPtr, /* Object to initialize as a ByteArray. */
const unsigned char *bytes, /* The array of bytes to use as the new value.
* May be NULL even if numBytes > 0. */
- Tcl_Size numBytes) /* Number of bytes in the array.
- * Must be >= 0 */
+ Tcl_Size numBytes) /* Number of bytes in the array,
+ * must be >= 0 */
{
ByteArray *byteArrayPtr;
Tcl_ObjInternalRep ir;
@@ -1405,7 +1408,7 @@ BinaryScanCmd(
if (count == BINARY_NOCOUNT) {
count = 1;
}
- if (count > length - offset) {
+ if (count > (length - offset)) {
goto done;
}
}
@@ -1603,7 +1606,7 @@ BinaryScanCmd(
goto badIndex;
}
if (count == BINARY_NOCOUNT) {
- if (length < size + offset) {
+ if (length < (size + offset)) {
goto done;
}
valuePtr = ScanNumber(buffer+offset, cmd, flags,
diff --git a/generic/tclCompCmdsSZ.c b/generic/tclCompCmdsSZ.c
index d79b7b9..0281465 100644
--- a/generic/tclCompCmdsSZ.c
+++ b/generic/tclCompCmdsSZ.c
@@ -2563,7 +2563,7 @@ DupJumptableInfo(
Tcl_InitHashTable(&newJtPtr->hashTable, TCL_STRING_KEYS);
hPtr = Tcl_FirstHashEntry(&jtPtr->hashTable, &search);
- while (hPtr != NULL) {
+ for (; hPtr ; hPtr = Tcl_NextHashEntry(&search)) {
newHPtr = Tcl_CreateHashEntry(&newJtPtr->hashTable,
Tcl_GetHashKey(&jtPtr->hashTable, hPtr), &isNew);
Tcl_SetHashValue(newHPtr, Tcl_GetHashValue(hPtr));
diff --git a/generic/tclDecls.h b/generic/tclDecls.h
index afa29a1..a2b0ec1 100644
--- a/generic/tclDecls.h
+++ b/generic/tclDecls.h
@@ -1764,8 +1764,7 @@ EXTERN int Tcl_UtfCharComplete(const char *src, Tcl_Size length);
EXTERN const char * Tcl_UtfNext(const char *src);
/* 656 */
EXTERN const char * Tcl_UtfPrev(const char *src, const char *start);
-/* 657 */
-EXTERN int Tcl_UniCharIsUnicode(int ch);
+/* Slot 657 is reserved */
/* 658 */
EXTERN int Tcl_ExternalToUtfDStringEx(Tcl_Interp *interp,
Tcl_Encoding encoding, const char *src,
@@ -2537,7 +2536,7 @@ typedef struct TclStubs {
int (*tcl_UtfCharComplete) (const char *src, Tcl_Size length); /* 654 */
const char * (*tcl_UtfNext) (const char *src); /* 655 */
const char * (*tcl_UtfPrev) (const char *src, const char *start); /* 656 */
- int (*tcl_UniCharIsUnicode) (int ch); /* 657 */
+ void (*reserved657)(void);
int (*tcl_ExternalToUtfDStringEx) (Tcl_Interp *interp, Tcl_Encoding encoding, const char *src, Tcl_Size srcLen, int flags, Tcl_DString *dsPtr, Tcl_Size *errorLocationPtr); /* 658 */
int (*tcl_UtfToExternalDStringEx) (Tcl_Interp *interp, Tcl_Encoding encoding, const char *src, Tcl_Size srcLen, int flags, Tcl_DString *dsPtr, Tcl_Size *errorLocationPtr); /* 659 */
int (*tcl_AsyncMarkFromSignal) (Tcl_AsyncHandler async, int sigNumber); /* 660 */
@@ -3835,8 +3834,7 @@ extern const TclStubs *tclStubsPtr;
(tclStubsPtr->tcl_UtfNext) /* 655 */
#define Tcl_UtfPrev \
(tclStubsPtr->tcl_UtfPrev) /* 656 */
-#define Tcl_UniCharIsUnicode \
- (tclStubsPtr->tcl_UniCharIsUnicode) /* 657 */
+/* Slot 657 is reserved */
#define Tcl_ExternalToUtfDStringEx \
(tclStubsPtr->tcl_ExternalToUtfDStringEx) /* 658 */
#define Tcl_UtfToExternalDStringEx \
diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c
index 921d79e..df218b3 100644
--- a/generic/tclIOUtil.c
+++ b/generic/tclIOUtil.c
@@ -1802,12 +1802,12 @@ Tcl_FSEvalFileEx(
*/
const char *pathString = Tcl_GetStringFromObj(pathPtr, &length);
- unsigned limit = 150;
- int overflow = ((unsigned)length > limit);
+ int limit = 150;
+ int overflow = (length > limit);
Tcl_AppendObjToErrorInfo(interp, Tcl_ObjPrintf(
"\n (file \"%.*s%s\" line %d)",
- (overflow ? limit : (unsigned)length), pathString,
+ (overflow ? limit : (int)length), pathString,
(overflow ? "..." : ""), Tcl_GetErrorLine(interp)));
}
@@ -1955,12 +1955,12 @@ EvalFileCallback(
Tcl_Size length;
const char *pathString = Tcl_GetStringFromObj(pathPtr, &length);
- const unsigned limit = 150;
- int overflow = ((unsigned)length > limit);
+ const int limit = 150;
+ int overflow = (length > limit);
Tcl_AppendObjToErrorInfo(interp, Tcl_ObjPrintf(
"\n (file \"%.*s%s\" line %d)",
- (overflow ? limit : (unsigned)length), pathString,
+ (overflow ? limit : (int)length), pathString,
(overflow ? "..." : ""), Tcl_GetErrorLine(interp)));
}
@@ -3798,7 +3798,6 @@ FsListMounts(
*---------------------------------------------------------------------------
*/
-#undef Tcl_FSSplitPath
Tcl_Obj *
Tcl_FSSplitPath(
Tcl_Obj *pathPtr, /* The pathname to split. */
@@ -3862,8 +3861,8 @@ Tcl_FSSplitPath(
length = p - elementStart;
if (length > 0) {
Tcl_Obj *nextElt;
- nextElt = Tcl_NewStringObj(elementStart, length);
- Tcl_ListObjAppendElement(NULL, result, nextElt);
+ nextElt = Tcl_NewStringObj(elementStart, length);
+ Tcl_ListObjAppendElement(NULL, result, nextElt);
}
if (*p++ == '\0') {
break;
diff --git a/generic/tclInt.decls b/generic/tclInt.decls
index ad37a0f..6a389c0 100644
--- a/generic/tclInt.decls
+++ b/generic/tclInt.decls
@@ -37,11 +37,6 @@ declare 6 {
declare 7 {
Tcl_Size TclCopyAndCollapse(Tcl_Size count, const char *src, char *dst)
}
-# Removed in 9.0:
-#declare 8 {
-# int TclCopyChannelOld(Tcl_Interp *interp, Tcl_Channel inChan,
-# Tcl_Channel outChan, int toRead, Tcl_Obj *cmdPtr)
-#}
# TclCreatePipeline unofficially exported for use by BLT.
declare 9 {
Tcl_Size TclCreatePipeline(Tcl_Interp *interp, Tcl_Size argc, const char **argv,
@@ -290,33 +285,10 @@ declare 120 {
Tcl_Var Tcl_FindNamespaceVar(Tcl_Interp *interp, const char *name,
Tcl_Namespace *contextNsPtr, int flags)
}
-# Removed in 9.0:
-#declare 121 {
-# int TclForgetImport(Tcl_Interp *interp, Tcl_Namespace *nsPtr,
-# const char *pattern)
-#}
-#declare 122 {
-# Tcl_Command TclGetCommandFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr)
-#}
-#declare 123 {
-# void TclGetCommandFullName(Tcl_Interp *interp, Tcl_Command command,
-# Tcl_Obj *objPtr)
-#}
-#declare 124 {
-# Tcl_Namespace *TclGetCurrentNamespace_(Tcl_Interp *interp)
-#}
-#declare 125 {
-# Tcl_Namespace *TclGetGlobalNamespace_(Tcl_Interp *interp)
-#}
declare 126 {
void Tcl_GetVariableFullName(Tcl_Interp *interp, Tcl_Var variable,
Tcl_Obj *objPtr)
}
-# Removed in 9.0:
-#declare 127 {
-# int TclImport(Tcl_Interp *interp, Tcl_Namespace *nsPtr,
-# const char *pattern, int allowOverwrite)
-#}
declare 128 {
void Tcl_PopCallFrame(Tcl_Interp *interp)
}
@@ -332,14 +304,6 @@ declare 131 {
Tcl_ResolveCmdProc *cmdProc, Tcl_ResolveVarProc *varProc,
Tcl_ResolveCompiledVarProc *compiledVarProc)
}
-# Removed in 9.0:
-#declare 132 {
-# int TclpHasSockets(Tcl_Interp *interp)
-#}
-# Removed in 9.0:
-#declare 133 {
-# struct tm *TclpGetDate(const time_t *time, int useGMT)
-#}
declare 138 {
const char *TclGetEnv(const char *name, Tcl_DString *valuePtr)
}
@@ -388,14 +352,6 @@ declare 156 {
declare 157 {
Var *TclVarTraceExists(Tcl_Interp *interp, const char *varName)
}
-# Removed in 9.0:
-#declare 158 {
-# void TclSetStartupScriptFileName(const char *filename)
-#}
-#declare 159 {
-# const char *TclGetStartupScriptFileName(void)
-#}
-
declare 161 {
int TclChannelTransform(Tcl_Interp *interp, Tcl_Channel chan,
Tcl_Obj *cmdObjPtr)
@@ -432,13 +388,6 @@ declare 166 {
Tcl_Size index, Tcl_Obj *valuePtr)
}
-# Removed in 9.0:
-#declare 167 {
-# void TclSetStartupScriptPath(Tcl_Obj *pathPtr)
-#}
-#declare 168 {
-# Tcl_Obj *TclGetStartupScriptPath(void)
-#}
# variant of Tcl_UtfNcmp that takes n as bytes, not chars
declare 169 {
int TclpUtfNcmp2(const void *s1, const void *s2, size_t n)
@@ -471,22 +420,6 @@ declare 177 {
void TclVarErrMsg(Tcl_Interp *interp, const char *part1, const char *part2,
const char *operation, const char *reason)
}
-# Removed in 9.0:
-#declare 178 {
-# void TclSetStartupScript(Tcl_Obj *pathPtr, const char *encodingName)
-#}
-#declare 179 {
-# Tcl_Obj *TclGetStartupScript(const char **encodingNamePtr)
-#}
-#declare 182 {
-# struct tm *TclpLocaltime(const time_t *clock)
-#}
-#declare 183 {
-# struct tm *TclpGmtime(const time_t *clock)
-#}
-
-# For the new "Thread Storage" subsystem.
-
declare 198 {
int TclObjGetFrame(Tcl_Interp *interp, Tcl_Obj *objPtr,
CallFrame **framePtrPtr)
@@ -609,10 +542,6 @@ declare 234 {
declare 235 {
void TclInitVarHashTable(TclVarHashTable *tablePtr, Namespace *nsPtr)
}
-# Removed in 9.0:
-#declare 236 {
-# void TclBackgroundException(Tcl_Interp *interp, int code)
-#}
# TIP #285: Script cancellation support.
declare 237 {
@@ -726,10 +655,6 @@ interface tclIntPlat
################################
# Platform specific functions
-# Removed in 9.0
-#declare 0 {unix win} {
-# void TclWinConvertError(unsigned errCode)
-#}
declare 1 {
int TclpCloseFile(TclFile file)
}
diff --git a/generic/tclTomMath.decls b/generic/tclTomMath.decls
index da3f95d..dad35b3 100644
--- a/generic/tclTomMath.decls
+++ b/generic/tclTomMath.decls
@@ -73,10 +73,6 @@ declare 15 {
declare 16 {
mp_err MP_WUR TclBN_mp_div_2d(const mp_int *a, int b, mp_int *q, mp_int *r)
}
-# Removed in 9.0
-#declare 17 {
-# mp_err TclBN_mp_div_3(const mp_int *a, mp_int *q, mp_digit *r)
-#}
declare 18 {
void TclBN_mp_exch(mp_int *a, mp_int *b)
}
@@ -140,14 +136,6 @@ declare 37 {
declare 38 {
mp_err MP_WUR TclBN_mp_shrink(mp_int *a)
}
-# Removed in 9.0
-#declare 39 {
-# void TclBN_mp_set(mp_int *a, unsigned int b)
-#}
-# Removed in 9.0
-#declare 40 {nostub {is private function in libtommath}} {
-# mp_err TclBN_mp_sqr(const mp_int *a, mp_int *b)
-#}
declare 41 {
mp_err MP_WUR TclBN_mp_sqrt(const mp_int *a, mp_int *b)
}
@@ -157,19 +145,6 @@ declare 42 {
declare 43 {
mp_err MP_WUR TclBN_mp_sub_d(const mp_int *a, mp_digit b, mp_int *c)
}
-# Removed in 9.0
-#declare 44 {
-# mp_err TclBN_mp_to_unsigned_bin(const mp_int *a, unsigned char *b)
-#}
-# Removed in 9.0
-#declare 45 {
-# mp_err TclBN_mp_to_unsigned_bin_n(const mp_int *a, unsigned char *b,
-# unsigned long *outlen)
-#}
-# Removed in 9.0
-#declare 46 {
-# mp_err TclBN_mp_toradix_n(const mp_int *a, char *str, int radix, int maxlen)
-#}
declare 47 {
size_t MP_WUR TclBN_mp_ubin_size(const mp_int *a)
}
@@ -179,21 +154,9 @@ declare 48 {
declare 49 {
void TclBN_mp_zero(mp_int *a)
}
-# Removed in 9.0
-#declare 61 {
-# mp_err TclBN_mp_init_ul(mp_int *a, unsigned long i)
-#}
-# Removed in 9.0
-#declare 62 {
-# void TclBN_mp_set_ul(mp_int *a, unsigned long i)
-#}
declare 63 {
int MP_WUR TclBN_mp_cnt_lsb(const mp_int *a)
}
-# Removed in 9.0
-#declare 64 {
-# int TclBN_mp_init_l(mp_int *bignum, long initVal)
-#}
declare 65 {
int MP_WUR TclBN_mp_init_i64(mp_int *bignum, int64_t initVal)
}
@@ -201,11 +164,6 @@ declare 66 {
int MP_WUR TclBN_mp_init_u64(mp_int *bignum, uint64_t initVal)
}
-# Removed in 9.0
-#declare 67 {
-# mp_err TclBN_mp_expt_d_ex(const mp_int *a, mp_digit b, mp_int *c, int fast)
-#}
-# Added in libtommath 1.0.1
declare 68 {
void TclBN_mp_set_u64(mp_int *a, uint64_t i)
}
@@ -224,19 +182,6 @@ declare 72 {
size_t size, mp_endian endian, size_t nails, const mp_int *op)
}
-# Added in libtommath 1.1.0
-# No longer in use: replaced by mp_and()
-#declare 73 {
-# int TclBN_mp_tc_and(const mp_int *a, const mp_int *b, mp_int *c)
-#}
-# No longer in use: replaced by mp_or()
-#declare 74 {
-# int TclBN_mp_tc_or(const mp_int *a, const mp_int *b, mp_int *c)
-#}
-# No longer in use: replaced by mp_xor()
-#declare 75 {
-# int TclBN_mp_tc_xor(const mp_int *a, const mp_int *b, mp_int *c)
-#}
declare 76 {
mp_err MP_WUR TclBN_mp_signed_rsh(const mp_int *a, int b, mp_int *c)
}
@@ -248,10 +193,6 @@ declare 77 {
declare 78 {
int MP_WUR TclBN_mp_to_ubin(const mp_int *a, unsigned char *buf, size_t maxlen, size_t *written)
}
-# Removed in 9.0
-#declare 79 {
-# mp_err MP_WUR TclBN_mp_div_ld(const mp_int *a, mp_digit b, mp_int *q, mp_digit *r)
-#}
declare 80 {
int MP_WUR TclBN_mp_to_radix(const mp_int *a, char *str, size_t maxlen, size_t *written, int radix)
}
diff --git a/generic/tclUtf.c b/generic/tclUtf.c
index 9888772..0babf4d 100644
--- a/generic/tclUtf.c
+++ b/generic/tclUtf.c
@@ -26,7 +26,7 @@
#define ALPHA_BITS ((1 << UPPERCASE_LETTER) | (1 << LOWERCASE_LETTER) \
| (1 << TITLECASE_LETTER) | (1 << MODIFIER_LETTER) | (1<<OTHER_LETTER))
-#define CONTROL_BITS ((1 << CONTROL) | (1 << FORMAT) | (1 << PRIVATE_USE))
+#define CONTROL_BITS ((1 << CONTROL) | (1 << FORMAT))
#define DIGIT_BITS (1 << DECIMAL_DIGIT_NUMBER)
diff --git a/library/clock.tcl b/library/clock.tcl
index 1891b21..60dfb38 100644
--- a/library/clock.tcl
+++ b/library/clock.tcl
@@ -16,9 +16,17 @@
#
#----------------------------------------------------------------------
-# We must have message catalogs that support the root locale.
+# msgcat 1.7 features are used. We need access to the Registry on Windows
+# systems.
-package require msgcat 1.6
+uplevel \#0 {
+ package require msgcat 1.7
+ if { $::tcl_platform(platform) eq {windows} } {
+ if { [catch { package require registry 1.1 }] } {
+ namespace eval ::tcl::clock [list variable NoRegistry {}]
+ }
+ }
+}
# Put the library directory into the namespace for the ensemble so that the
# library code can find message catalogs and time zone definition files.
@@ -52,6 +60,7 @@ namespace eval ::tcl::clock {
# Import the message catalog commands that we use.
namespace import ::msgcat::mclocale
+ proc mc {args} { tailcall ::msgcat::mcn [namespace current] {*}$args }
namespace import ::msgcat::mcpackagelocale
}
diff --git a/library/msgcat/msgcat.tcl b/library/msgcat/msgcat.tcl
index fa21685..f6e5224 100644
--- a/library/msgcat/msgcat.tcl
+++ b/library/msgcat/msgcat.tcl
@@ -1220,27 +1220,32 @@ proc msgcat::mcutil::ConvertLocale {value} {
# - called from an class defined oo object
# - called from a classless oo object
proc ::msgcat::PackageNamespaceGet {} {
- uplevel 2 {
- # Check self namespace to determine environment
- switch -exact -- [namespace which self] {
- {::oo::define::self} {
- # We are within a class definition
- return [namespace qualifiers [self]]
- }
- {::oo::Helpers::self} {
- # We are within an object
- set Class [info object class [self]]
- # Check for classless defined object
- if {$Class eq {::oo::object}} {
- return [namespace qualifiers [self]]
- }
- # Class defined object
- return [namespace qualifiers $Class]
- }
- default {
- # Not in object environment
- return [namespace current]
+ set ns [uplevel 2 { namespace current }]
+
+ if {![string match {::oo::*} $ns]} {
+ # Not in object environment
+ return $ns
+ }
+
+ # Check self namespace to determine environment
+ switch -exact -- [uplevel 2 { namespace which -command self }] {
+ {::oo::define::self} {
+ # We are within a class definition
+ return [namespace qualifiers [uplevel 2 { self }]]
+ }
+ {::oo::Helpers::self} {
+ # We are within an object
+ set Class [info object class [uplevel 2 { self }]]
+ # Check for classless defined object
+ if {$Class eq {::oo::object}} {
+ return [namespace qualifiers [uplevel 2 { self }]]
}
+ # Class defined object
+ return [namespace qualifiers $Class]
+ }
+ default {
+ # Not in object environment
+ return $ns
}
}
}
diff --git a/win/tclWinPipe.c b/win/tclWinPipe.c
index 60764e6..bce4d52 100644
--- a/win/tclWinPipe.c
+++ b/win/tclWinPipe.c
@@ -1101,7 +1101,7 @@ TclpCreateProcess(
*/
if (HasConsole()) {
- createFlags = 0;
+ createFlags = 0;
} else if (applType == APPL_DOS) {
/*
* Under NT, 16-bit DOS applications will not run unless they can