summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog181
-rw-r--r--generic/tcl.h6
-rw-r--r--generic/tclBasic.c2
-rw-r--r--generic/tclCmdAH.c10
-rw-r--r--generic/tclCompExpr.c144
-rw-r--r--generic/tclDTrace.d16
-rw-r--r--generic/tclDecls.h2
-rw-r--r--generic/tclIORTrans.c7
-rw-r--r--generic/tclInt.h3
-rw-r--r--generic/tclInterp.c26
-rw-r--r--generic/tclMain.c9
-rw-r--r--generic/tclOOMethod.c2
-rwxr-xr-xgeneric/tclStrToD.c12
-rw-r--r--generic/tclUtil.c3
-rw-r--r--library/tzdata/Africa/Juba39
-rw-r--r--library/tzdata/America/Goose_Bay355
-rw-r--r--library/tzdata/America/Metlakatla232
-rwxr-xr-xlibrary/tzdata/America/Resolute373
-rw-r--r--library/tzdata/America/St_Johns355
-rw-r--r--library/tzdata/Europe/Kaliningrad2
-rw-r--r--library/tzdata/Pacific/Apia1
-rw-r--r--library/tzdata/Pacific/Honolulu1
-rw-r--r--tests/binary.test17
-rw-r--r--tests/chanio.test28
-rw-r--r--tests/http.test19
-rw-r--r--tests/interp.test12
-rw-r--r--tests/io.test33
-rw-r--r--tests/oo.test132
-rw-r--r--tests/parseExpr.test66
-rw-r--r--tests/scan.test4
-rw-r--r--tests/socket.test29
-rw-r--r--tests/thread.test186
-rw-r--r--tests/unixNotfy.test15
-rw-r--r--unix/tclUnixSock.c17
-rw-r--r--win/tclWinPort.h8
35 files changed, 1256 insertions, 1091 deletions
diff --git a/ChangeLog b/ChangeLog
index 67572ce..26f0093 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,19 +1,120 @@
+2011-09-15 Don Porter <dgp@users.sourceforge.net>
+
+ * generic/tclCompExpr.c: [Bug 3408408] Partial improvement by
+ sharing as literals the computed values of constant subexpressions
+ when we can do so without incurring the cost of string rep
+ generation.
+
+2011-09-13 Don Porter <dgp@users.sourceforge.net>
+
+ * generic/tclUtil.c: [Bug 3390638] Workaround broken solaris
+ studio cc optimizer. Thanks to Wolfgang S. Kechel.
+
+ * generic/tclDTrace.d: [Bug 3405652] Portability workaround for
+ broken system DTrace support. Thanks to Dagobert Michelson.
+
+2011-09-12 Jan Nijtmans <nijtmans@users.sf.net>
+
+ * win/tclWinPort.h: [Bug 3407070] tclPosixStr.c won't build with
+ EOVERFLOW==E2BIG
+
+2011-09-11 Don Porter <dgp@users.sourceforge.net>
+
+ * tests/thread.test: Convert [testthread] use to Thread package
+ use in thread-6.1. Eliminates a memory leak in `make valgrind`.
+
+ * tests/socket.test: [Bug 3390699]: Convert [testthread] use to
+ Thread package use in socket_*-13.1. Eliminates a memory leak in
+ `make valgrind`.
+
+2011-09-10 Donal K. Fellows <dkf@users.sf.net>
+
+ * generic/tclOOMethod.c (InitEnsembleRewrite): [Bug 3400658]: Set the
+ ensemble-like rewriting up correctly for forwarded methods so that
+ computed error messages are correct.
+
+2011-09-09 Don Porter <dgp@users.sourceforge.net>
+
+ * tests/chanio.test: [Bug 3389733]: Convert [testthread] use to
+ * tests/io.test: Thread package use in *io-70.1. Eliminates a
+ memory leak in `make valgrind`.
+
+2011-09-07 Don Porter <dgp@users.sourceforge.net>
+
+ * generic/tclCompExpr.c: [Bug 3401704]: Allow function names like
+ * tests/parseExpr.test: influence(), nanobot(), and 99bottles() that
+ have been parsed as missing operator syntax errors before with the
+ form NUMBER + FUNCTION.
+ ***POTENTIAL INCOMPATIBILITY***
+
+2011-09-06 Venkat Iyer <venkat@comit.com>
+
+ * library/tzdata/America/Goose_Bay: Update to Olson's tzdata2011i
+ * library/tzdata/America/Metlakatla:
+ * library/tzdata/America/Resolute:
+ * library/tzdata/America/St_Johns:
+ * library/tzdata/Europe/Kaliningrad:
+ * library/tzdata/Pacific/Apia:
+ * library/tzdata/Pacific/Honolulu:
+ * library/tzdata/Africa/Juba: (new)
+
+2011-09-06 Jan Nijtmans <nijtmans@users.sf.net>
+
+ * generic/tcl.h: [RFE 1711975]: Tcl_MainEx() (like Tk_MainEx())
+ * generic/tclDecls.h
+ * generic/tclMain.c
+
+2011-09-02 Don Porter <dgp@users.sourceforge.net>
+
+ * tests/http.test: Convert [testthread] use to Thread package use.
+ Eliminates memory leak seen in `make valgrind`.
+
+2011-09-01 Alexandre Ferrieux <ferrieux@users.sourceforge.net>
+
+ * unix/tclUnixSock.c: [Bug 3401422]: Cache script-level changes to the
+ nonblocking flag of an async client socket in progress, and commit
+ them on completion.
+
+2011-09-01 Don Porter <dgp@users.sourceforge.net>
+
+ * generic/tclStrToD.c: [Bug 3402540]: Corrections to TclParseNumber()
+ * tests/binary.test: to make it reject invalid Nan(Hex) strings.
+
+ * tests/scan.test: [scan Inf %g] is portable; remove constraint.
+
+2011-08-30 Donal K. Fellows <dkf@users.sf.net>
+
+ * generic/tclInterp.c (SlaveCommandLimitCmd, SlaveTimeLimitCmd):
+ [Bug 3398794]: Ensure that low-level conditions in the limit API are
+ enforced at the script level through errors, not a Tcl_Panic. This
+ means that interpreters cannot read their own limits (writing already
+ did not work).
+
+2011-08-30 Reinhard Max <max@suse.de>
+
+ * unix/tclUnixSock.c (TcpWatchProc): [Bug 3394732]: Put back the check
+ for server sockets.
+
+2011-08-29 Don Porter <dgp@users.sourceforge.net>
+
+ * generic/tclIORTrans.c: Leak of ReflectedTransformMap.
+
2011-08-27 Don Porter <dgp@users.sourceforge.net>
- * generic/tclStringObj.c: [RFE 3396731] Revise the [string reverse]
+ * generic/tclStringObj.c: [RFE 3396731]: Revise the [string reverse]
* tests/string.test: implementation to operate on the representation
that comes in, avoid conversion to other reps.
2011-08-23 Don Porter <dgp@users.sourceforge.net>
- * generic/tclIORChan.c: [Bug 3396948] Leak of ReflectedChannelMap.
+ * generic/tclIORChan.c: [Bug 3396948]: Leak of ReflectedChannelMap.
2011-08-19 Don Porter <dgp@users.sourceforge.net>
- * generic/tclIORTrans.c: [Bugs 3393279, 3393280] ReflectClose(.) is
+ * generic/tclIORTrans.c: [Bugs 3393279, 3393280]: ReflectClose(.) is
missing Tcl_EventuallyFree() calls at some of its exits.
- * generic/tclIO.c: [Bugs 3394654, 3393276] Revise FlushChannel() to
+ * generic/tclIO.c: [Bugs 3394654, 3393276]: Revise FlushChannel() to
account for the possibility that the ChanWrite() call might recycle
the buffer out from under us.
@@ -22,22 +123,22 @@
2011-08-19 Alexandre Ferrieux <ferrieux@users.sourceforge.net>
- * generic/tclTest.c: [Bug 2981154] async-4.3 segfault.
- * tests/async.test: [Bug 1774689] async-4.3 sometimes fails.
+ * generic/tclTest.c: [Bug 2981154]: async-4.3 segfault.
+ * tests/async.test: [Bug 1774689]: async-4.3 sometimes fails.
2011-08-18 Alexandre Ferrieux <ferrieux@users.sourceforge.net>
- * generic/tclIO.c: [Bug 3096275] Sync fcopy buffers input.
+ * generic/tclIO.c: [Bug 3096275]: Sync fcopy buffers input.
2011-08-18 Jan Nijtmans <nijtmans@users.sf.net>
- * generic/tclUniData.c: [Bug 3393714] overflow in toupper delta
+ * generic/tclUniData.c: [Bug 3393714]: Overflow in toupper delta
* tools/uniParse.tcl
* tests/utf.test
2011-08-17 Alexandre Ferrieux <ferrieux@users.sourceforge.net>
- * generic/tclIO.c: [Bug 2946474] Consistently resume backgrounded
+ * generic/tclIO.c: [Bug 2946474]: Consistently resume backgrounded
* tests/ioCmd.test: flushes+closes when exiting.
2011-08-17 Alexandre Ferrieux <ferrieux@users.sourceforge.net>
@@ -46,12 +147,12 @@
2011-08-17 Don Porter <dgp@users.sourceforge.net>
- * generic/tclGet.c: [Bug 3393150] Overlooked free of intreps.
+ * generic/tclGet.c: [Bug 3393150]: Overlooked free of intreps.
(It matters for bignums!)
2011-08-16 Don Porter <dgp@users.sourceforge.net>
- * generic/tclCompile.c: [Bug 3392070] More complete prevention of
+ * generic/tclCompile.c: [Bug 3392070]: More complete prevention of
Tcl_Obj reference cycles when producing an intrep of ByteCode.
2011-08-16 Donal K. Fellows <dkf@users.sf.net>
@@ -172,7 +273,7 @@
* generic/tclIOSock.c (TclCreateSocketAddress): Don't bother using
AI_ADDRCONFIG for now, as it was causing problems in various
situations.
-
+
2011-08-04 Donal K. Fellows <dkf@users.sf.net>
* generic/tclAssembly.c (AssembleOneLine, GetBooleanOperand)
@@ -339,16 +440,16 @@
* unix/Makefile.in:
* win/Makefile.in:
* win/Makefile.vc:
- Fix a bug where bignum->double conversion is "round up" and
- not "round to nearest" (causing expr double(1[string repeat 0 23])
- not to be 1e+23). [Bug 3349507]
+ [Bug 3349507]: Fix a bug where bignum->double conversion is "round up"
+ and not "round to nearest" (causing expr double(1[string repeat 0 23])
+ not to be 1e+23).
2011-06-28 Reinhard Max <max@suse.de>
- * unix/tclUnixSock.c (CreateClientSocket): Fix and simplify
- posting of the writable fileevent at the end of an asynchronous
- connection attempt. Improve comments for some of the trickery
- around [socket -async]. [Bug 3325339]
+ * unix/tclUnixSock.c (CreateClientSocket): [Bug 3325339]: Fix and
+ simplify posting of the writable fileevent at the end of an
+ asynchronous connection attempt. Improve comments for some of the
+ trickery around [socket -async].
* tests/socket.test: Adjust tests to the async code changes. Add
more tests for corner cases of async sockets.
@@ -376,12 +477,12 @@
2011-06-21 Don Porter <dgp@users.sourceforge.net>
- * generic/tclLink.c: Prevent multiple links to a single Tcl
- variable when calling Tcl_LinkVar(). [Bug 3317466]
+ * generic/tclLink.c: [Bug 3317466]: Prevent multiple links to a
+ single Tcl variable when calling Tcl_LinkVar().
2011-06-13 Don Porter <dgp@users.sourceforge.net>
- * generic/tclStrToD.c: [Bug 3315098] Mem leak fix from Gustaf Neumann.
+ * generic/tclStrToD.c: [Bug 3315098]: Mem leak fix from Gustaf Neumann.
2011-06-08 Andreas Kupries <andreask@activestate.com>
@@ -737,10 +838,10 @@
2011-04-04 Don Porter <dgp@users.sourceforge.net>
- * README: Updated README files, repairing broken URLs and
- * macosx/README: removing other bits that were clearly wrong.
+ * README: [Bug 3202030]: Updated README files, repairing broken
+ * macosx/README:URLs and removing other bits that were clearly wrong.
* unix/README: Still could use more eyeballs on the detailed build
- * win/README: advice on various plaforms. [Bug 3202030]
+ * win/README: advice on various plaforms.
2011-04-04 Donal K. Fellows <dkf@users.sf.net>
@@ -964,10 +1065,10 @@
2011-03-09 Don Porter <dgp@users.sourceforge.net>
- * generic/tclNamesp.c: Tighten the detector of nested [namespace code]
- * tests/namespace.test: quoting that the quoted scripts function
- properly even in a namespace that contains a custom "namespace"
- command. [Bug 3202171]
+ * generic/tclNamesp.c: [Bug 3202171]: Tighten the detector of nested
+ * tests/namespace.test: [namespace code] quoting that the quoted
+ scripts function properly even in a namespace that contains a custom
+ "namespace" command.
* doc/tclvars.n: Formatting fix. Thanks to Pat Thotys.
@@ -990,8 +1091,8 @@
* generic/tclInt.h: Remove TclMarkList() routine, an experimental
* generic/tclUtil.c: dead-end from the 8.5 alpha days.
- * generic/tclResult.c (ResetObjResult): Correct failure to clear
- invalid intrep. Thanks to Colin McDonald. [Bug 3202905]
+ * generic/tclResult.c (ResetObjResult): [Bug 3202905]: Correct failure
+ to clear invalid intrep. Thanks to Colin McDonald.
2011-03-08 Donal K. Fellows <dkf@users.sf.net>
@@ -1006,13 +1107,13 @@
* generic/tclParse.c:
* generic/tclUtil.c:
- * generic/tclUtil.c (TclFindElement): Guard escape sequence scans
- to not overrun the string end. [Bug 3192636]
+ * generic/tclUtil.c (TclFindElement): [Bug 3192636]: Guard escape
+ sequence scans to not overrun the string end.
2011-03-05 Don Porter <dgp@users.sourceforge.net>
- * generic/tclParse.c (TclParseBackslash): Correct trunction checks in
- * tests/parse.test: \x and \u substitutions. [Bug 3200987]
+ * generic/tclParse.c (TclParseBackslash): [Bug 3200987]: Correct
+ * tests/parse.test: trunction checks in \x and \u substitutions.
2011-03-05 Miguel Sofer <msofer@users.sf.net>
@@ -1085,17 +1186,17 @@
* generic/tclStubInit.c:
* win/makefile.vc:
- * generic/tclExecute.c (ExprObjCallback): fix object leak
+ * generic/tclExecute.c (ExprObjCallback): Fix object leak
- * generic/tclExecute.c (TEBCresume): store local var array and
+ * generic/tclExecute.c (TEBCresume): Store local var array and
constants in automatic vars to reduce indirection, slight perf
increase
- * generic/tclOOCall.c (TclOODeleteContext): added missing '*' so
+ * generic/tclOOCall.c (TclOODeleteContext): Added missing '*' so
that trunk compiles.
- * generic/tclBasic.c (TclNRRunCallbacks): don't do the trampoline
- dance for commands that do not have an nreProc, [Patch 3168229]
+ * generic/tclBasic.c (TclNRRunCallbacks): [Patch 3168229]: Don't do
+ the trampoline dance for commands that do not have an nreProc.
2011-03-01 Donal K. Fellows <dkf@users.sf.net>
diff --git a/generic/tcl.h b/generic/tcl.h
index 7370516..7a94956 100644
--- a/generic/tcl.h
+++ b/generic/tcl.h
@@ -2373,8 +2373,10 @@ const char * TclTomMathInitializeStubs(Tcl_Interp *interp,
* Tcl_GetMemoryInfo is needed for AOLserver. [Bug 1868171]
*/
-EXTERN void Tcl_Main(int argc, char **argv,
- Tcl_AppInitProc *appInitProc);
+#define Tcl_Main(argc, argv, proc) Tcl_MainEx(argc, argv, proc, \
+ (Tcl_FindExecutable(argv[0]), (Tcl_CreateInterp)()))
+EXTERN void Tcl_MainEx(int argc, char **argv,
+ Tcl_AppInitProc *appInitProc, Tcl_Interp *interp);
EXTERN const char * Tcl_PkgInitStubsCheck(Tcl_Interp *interp,
const char *version, int exact);
#if defined(TCL_THREADS) && defined(USE_THREAD_ALLOC)
diff --git a/generic/tclBasic.c b/generic/tclBasic.c
index f0f0c0f..9758449 100644
--- a/generic/tclBasic.c
+++ b/generic/tclBasic.c
@@ -215,7 +215,7 @@ static const CmdInfo builtInCmds[] = {
{"continue", Tcl_ContinueObjCmd, TclCompileContinueCmd, NULL, 1},
{"coroutine", NULL, NULL, TclNRCoroutineObjCmd, 1},
{"error", Tcl_ErrorObjCmd, TclCompileErrorCmd, NULL, 1},
- {"eval", Tcl_EvalObjCmd, NULL, NULL, 1},
+ {"eval", Tcl_EvalObjCmd, NULL, TclNREvalObjCmd, 1},
{"expr", Tcl_ExprObjCmd, TclCompileExprCmd, TclNRExprObjCmd, 1},
{"for", Tcl_ForObjCmd, TclCompileForCmd, TclNRForObjCmd, 1},
{"foreach", Tcl_ForeachObjCmd, TclCompileForeachCmd, TclNRForeachCmd, 1},
diff --git a/generic/tclCmdAH.c b/generic/tclCmdAH.c
index 765c9dc..fc9d39d 100644
--- a/generic/tclCmdAH.c
+++ b/generic/tclCmdAH.c
@@ -737,6 +737,16 @@ Tcl_EvalObjCmd(
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
{
+ return Tcl_NRCallObjProc(interp, TclNREvalObjCmd, dummy, objc, objv);
+}
+
+int
+TclNREvalObjCmd(
+ ClientData dummy, /* Not used. */
+ Tcl_Interp *interp, /* Current interpreter. */
+ int objc, /* Number of arguments. */
+ Tcl_Obj *const objv[]) /* Argument objects. */
+{
register Tcl_Obj *objPtr;
Interp *iPtr = (Interp *) interp;
CmdFrame *invoker = NULL;
diff --git a/generic/tclCompExpr.c b/generic/tclCompExpr.c
index d1d7403..d96670c 100644
--- a/generic/tclCompExpr.c
+++ b/generic/tclCompExpr.c
@@ -659,11 +659,6 @@ ParseExpr(
Tcl_Obj *literal; /* Filled by the ParseLexeme() call when a
* literal is parsed that has a Tcl_Obj rep
* worth preserving. */
- const char *lastStart = start - scanned;
- /* Compute where the lexeme parsed the
- * previous pass through the loop began. This
- * is helpful for detecting invalid octals and
- * providing more complete error messages. */
/*
* Each pass through this loop adds up to one more OpNode. Allocate
@@ -754,33 +749,39 @@ ParseExpr(
Tcl_AppendPrintfToObj(post, " or \"%.*s%s(...)\" or ...",
(scanned < limit) ? scanned : limit - 3,
start, (scanned < limit) ? "" : "...");
- if (NotOperator(lastParsed)) {
- errCode = "BADNUMBER";
- if ((lastStart[0] == '0')
- && ((lastStart[1] == 'o')
- || (lastStart[1] == 'O'))
- && (lastStart[2] >= '0')
- && (lastStart[2] <= '9')) {
- const char *end = lastStart + 2;
- Tcl_Obj *copy;
-
- while (isdigit(UCHAR(*end))) {
- end++;
- }
- copy = Tcl_NewStringObj(lastStart, end-lastStart);
- if (TclCheckBadOctal(NULL, Tcl_GetString(copy))) {
+ errCode = "BAREWORD";
+ if (start[0] == '0') {
+ const char *stop;
+ TclParseNumber(NULL, NULL, NULL, start, scanned,
+ &stop, TCL_PARSE_NO_WHITESPACE);
+
+ if (isdigit(UCHAR(*stop)) || (stop == start + 1)) {
+ switch (start[1]) {
+ case 'b':
+ Tcl_AppendToObj(post,
+ " (invalid binary number?)", -1);
+ parsePtr->errorType = TCL_PARSE_BAD_NUMBER;
+ errCode = "BADNUMBER";
+ subErrCode = "BINARY";
+ break;
+ case 'o':
Tcl_AppendToObj(post,
" (invalid octal number?)", -1);
+ parsePtr->errorType = TCL_PARSE_BAD_NUMBER;
errCode = "BADNUMBER";
subErrCode = "OCTAL";
+ break;
+ default:
+ if (isdigit(UCHAR(start[1]))) {
+ Tcl_AppendToObj(post,
+ " (invalid octal number?)", -1);
+ parsePtr->errorType = TCL_PARSE_BAD_NUMBER;
+ errCode = "BADNUMBER";
+ subErrCode = "OCTAL";
+ }
+ break;
}
- Tcl_DecrRefCount(copy);
}
- scanned = 0;
- insertMark = 1;
- parsePtr->errorType = TCL_PARSE_BAD_NUMBER;
- } else {
- errCode = "BAREWORD";
}
goto error;
}
@@ -824,20 +825,8 @@ ParseExpr(
if (NotOperator(lastParsed)) {
msg = Tcl_ObjPrintf("missing operator at %s", mark);
errCode = "MISSING";
- if (lastStart[0] == '0') {
- Tcl_Obj *copy = Tcl_NewStringObj(lastStart,
- start + scanned - lastStart);
-
- if (TclCheckBadOctal(NULL, Tcl_GetString(copy))) {
- TclNewLiteralStringObj(post,
- "looks like invalid octal number");
- errCode = "BADNUMBER_OCTAL";
- }
- Tcl_DecrRefCount(copy);
- }
scanned = 0;
insertMark = 1;
- parsePtr->errorType = TCL_PARSE_BAD_NUMBER;
/* Free any literal to avoid a memleak. */
if ((lexeme == NUMBER) || (lexeme == BOOLEAN)) {
@@ -1996,14 +1985,53 @@ ParseLexeme(
literal = Tcl_NewObj();
if (TclParseNumber(NULL, literal, NULL, start, numBytes, &end,
TCL_PARSE_NO_WHITESPACE) == TCL_OK) {
- TclInitStringRep(literal, start, end-start);
- *lexemePtr = NUMBER;
- if (literalPtr) {
- *literalPtr = literal;
+ if (end < start + numBytes && !isalnum(UCHAR(*end))
+ && UCHAR(*end) != '_') {
+
+ number:
+ TclInitStringRep(literal, start, end-start);
+ *lexemePtr = NUMBER;
+ if (literalPtr) {
+ *literalPtr = literal;
+ } else {
+ Tcl_DecrRefCount(literal);
+ }
+ return (end-start);
} else {
- Tcl_DecrRefCount(literal);
+ unsigned char lexeme;
+
+ /*
+ * We have a number followed directly by bareword characters
+ * (alpha, digit, underscore). Is this a number followed by
+ * bareword syntax error? Or should we join into one bareword?
+ * Example: Inf + luence + () becomes a valid function call.
+ * [Bug 3401704]
+ */
+ if (literal->typePtr == &tclDoubleType) {
+ const char *p = start;
+ while (p < end) {
+ if (!isalnum(UCHAR(*p++))) {
+ /*
+ * The number has non-bareword characters, so we
+ * must treat it as a number.
+ */
+ goto number;
+ }
+ }
+ }
+ ParseLexeme(end, numBytes-(end-start), &lexeme, NULL);
+ if ((NODE_TYPE & lexeme) == BINARY) {
+ /*
+ * The bareword characters following the number take the
+ * form of an operator (eq, ne, in, ni, ...) so we treat
+ * as number + operator.
+ */
+ goto number;
+ }
+ /*
+ * Otherwise, fall through and parse the whole as a bareword.
+ */
}
- return (end-start);
}
if (Tcl_UtfCharComplete(start, numBytes)) {
@@ -2015,7 +2043,7 @@ ParseLexeme(
utfBytes[numBytes] = '\0';
scanned = Tcl_UtfToUniChar(utfBytes, &ch);
}
- if (!isalpha(UCHAR(ch))) {
+ if (!isalnum(UCHAR(ch))) {
*lexemePtr = INVALID;
Tcl_DecrRefCount(literal);
return scanned;
@@ -2443,8 +2471,30 @@ CompileExprTree(
if (ExecConstantExprTree(interp, nodes, next, litObjvPtr)
== TCL_OK) {
- TclEmitPush(TclAddLiteralObj(envPtr,
- Tcl_GetObjResult(interp), NULL), envPtr);
+ int index;
+ Tcl_Obj *objPtr = Tcl_GetObjResult(interp);
+
+ /*
+ * Don't generate a string rep, but if we have one
+ * already, then use it to share via the literal table.
+ */
+ if (objPtr->bytes) {
+ Tcl_Obj *tableValue;
+
+ index = TclRegisterNewLiteral(envPtr, objPtr->bytes,
+ objPtr->length);
+ tableValue = envPtr->literalArrayPtr[index].objPtr;
+ if ((tableValue->typePtr == NULL) &&
+ (objPtr->typePtr != NULL)) {
+ /* Same intrep surgery as for OT_LITERAL */
+ tableValue->typePtr = objPtr->typePtr;
+ tableValue->internalRep = objPtr->internalRep;
+ objPtr->typePtr = NULL;
+ }
+ } else {
+ index = TclAddLiteralObj(envPtr, objPtr, NULL);
+ }
+ TclEmitPush(index, envPtr);
} else {
TclCompileSyntaxError(interp, envPtr);
}
diff --git a/generic/tclDTrace.d b/generic/tclDTrace.d
index 0ee592f..360bdff 100644
--- a/generic/tclDTrace.d
+++ b/generic/tclDTrace.d
@@ -25,7 +25,7 @@ provider tcl {
* arg1: number of arguments (int)
* arg2: array of proc argument objects (Tcl_Obj**)
*/
- probe proc__entry(TclDTraceStr name, int objc, Tcl_Obj **objv);
+ probe proc__entry(TclDTraceStr name, int objc, struct Tcl_Obj **objv);
/*
* tcl*:::proc-return probe
* triggered immediately after proc bytecode execution
@@ -42,7 +42,7 @@ provider tcl {
* arg3: proc result object (Tcl_Obj*)
*/
probe proc__result(TclDTraceStr name, int code, TclDTraceStr result,
- Tcl_Obj *resultobj);
+ struct Tcl_Obj *resultobj);
/*
* tcl*:::proc-args probe
* triggered before proc-entry probe, gives access to string
@@ -79,7 +79,7 @@ provider tcl {
* arg1: number of arguments (int)
* arg2: array of command argument objects (Tcl_Obj**)
*/
- probe cmd__entry(TclDTraceStr name, int objc, Tcl_Obj **objv);
+ probe cmd__entry(TclDTraceStr name, int objc, struct Tcl_Obj **objv);
/*
* tcl*:::cmd-return probe
* triggered immediately after commmand execution
@@ -96,7 +96,7 @@ provider tcl {
* arg3: command result object (Tcl_Obj*)
*/
probe cmd__result(TclDTraceStr name, int code, TclDTraceStr result,
- Tcl_Obj *resultobj);
+ struct Tcl_Obj *resultobj);
/*
* tcl*:::cmd-args probe
* triggered before cmd-entry probe, gives access to string
@@ -133,7 +133,7 @@ provider tcl {
* arg1: depth of stack (int)
* arg2: top of stack (Tcl_Obj**)
*/
- probe inst__start(TclDTraceStr name, int depth, Tcl_Obj **stack);
+ probe inst__start(TclDTraceStr name, int depth, struct Tcl_Obj **stack);
/*
* tcl*:::inst-done probe
* triggered immediately after execution of a bytecode
@@ -141,7 +141,7 @@ provider tcl {
* arg1: depth of stack (int)
* arg2: top of stack (Tcl_Obj**)
*/
- probe inst__done(TclDTraceStr name, int depth, Tcl_Obj **stack);
+ probe inst__done(TclDTraceStr name, int depth, struct Tcl_Obj **stack);
/***************************** obj probes ******************************/
/*
@@ -149,13 +149,13 @@ provider tcl {
* triggered immediately after a new Tcl_Obj has been created
* arg0: object created (Tcl_Obj*)
*/
- probe obj__create(Tcl_Obj* obj);
+ probe obj__create(struct Tcl_Obj* obj);
/*
* tcl*:::obj-free probe
* triggered immediately before a Tcl_Obj is freed
* arg0: object to be freed (Tcl_Obj*)
*/
- probe obj__free(Tcl_Obj* obj);
+ probe obj__free(struct Tcl_Obj* obj);
/***************************** tcl probes ******************************/
/*
diff --git a/generic/tclDecls.h b/generic/tclDecls.h
index 1df7e14..1f7dfe6 100644
--- a/generic/tclDecls.h
+++ b/generic/tclDecls.h
@@ -3791,8 +3791,6 @@ extern const TclStubs *tclStubsPtr;
# define Tcl_MainEx Tcl_MainExW
EXTERN void Tcl_MainExW(int argc, wchar_t **argv,
Tcl_AppInitProc *appInitProc, Tcl_Interp *interp);
-# define Tcl_Main(argc, argv, proc) Tcl_MainExW(argc, argv, proc, \
- (Tcl_FindExecutable(argv[0]), (Tcl_CreateInterp)()))
#endif
#undef TCL_STORAGE_CLASS
diff --git a/generic/tclIORTrans.c b/generic/tclIORTrans.c
index 4806690..fa973c7 100644
--- a/generic/tclIORTrans.c
+++ b/generic/tclIORTrans.c
@@ -2191,6 +2191,7 @@ DeleteReflectedTransformMap(
Tcl_ConditionNotify(&resultPtr->done);
}
+ Tcl_MutexUnlock(&rtForwardMutex);
/*
* Get the map of all channels handled by the current thread. This is a
@@ -2215,8 +2216,6 @@ DeleteReflectedTransformMap(
Tcl_DeleteHashEntry(hPtr);
}
-
- Tcl_MutexUnlock(&rtForwardMutex);
#endif
}
@@ -2323,6 +2322,7 @@ DeleteThreadReflectedTransformMap(
Tcl_ConditionNotify(&resultPtr->done);
}
+ Tcl_MutexUnlock(&rtForwardMutex);
/*
* Get the map of all channels handled by the current thread. This is a
@@ -2339,8 +2339,7 @@ DeleteThreadReflectedTransformMap(
rtPtr->interp = NULL;
Tcl_DeleteHashEntry(hPtr);
}
-
- Tcl_MutexUnlock(&rtForwardMutex);
+ ckfree(rtmPtr);
}
static void
diff --git a/generic/tclInt.h b/generic/tclInt.h
index d65f712..f30e83e 100644
--- a/generic/tclInt.h
+++ b/generic/tclInt.h
@@ -2768,7 +2768,7 @@ MODULE_SCOPE char tclEmptyString;
*/
MODULE_SCOPE Tcl_ObjCmdProc TclNRApplyObjCmd;
-MODULE_SCOPE Tcl_ObjCmdProc TclNRUplevelObjCmd;
+MODULE_SCOPE Tcl_ObjCmdProc TclNREvalObjCmd;
MODULE_SCOPE Tcl_ObjCmdProc TclNRCatchObjCmd;
MODULE_SCOPE Tcl_ObjCmdProc TclNRExprObjCmd;
MODULE_SCOPE Tcl_ObjCmdProc TclNRForObjCmd;
@@ -2778,6 +2778,7 @@ MODULE_SCOPE Tcl_ObjCmdProc TclNRSourceObjCmd;
MODULE_SCOPE Tcl_ObjCmdProc TclNRSubstObjCmd;
MODULE_SCOPE Tcl_ObjCmdProc TclNRSwitchObjCmd;
MODULE_SCOPE Tcl_ObjCmdProc TclNRTryObjCmd;
+MODULE_SCOPE Tcl_ObjCmdProc TclNRUplevelObjCmd;
MODULE_SCOPE Tcl_ObjCmdProc TclNRWhileObjCmd;
MODULE_SCOPE Tcl_NRPostProc TclNRForIterCallback;
diff --git a/generic/tclInterp.c b/generic/tclInterp.c
index a156a57..5b6d14f 100644
--- a/generic/tclInterp.c
+++ b/generic/tclInterp.c
@@ -4345,6 +4345,19 @@ SlaveCommandLimitCmd(
ScriptLimitCallback *limitCBPtr;
Tcl_HashEntry *hPtr;
+ /*
+ * First, ensure that we are not reading or writing the calling
+ * interpreter's limits; it may only manipulate its children. Note that
+ * the low level API enforces this with Tcl_Panic, which we want to
+ * avoid. [Bug 3398794]
+ */
+
+ if (interp == slaveInterp) {
+ Tcl_AppendResult(interp,
+ "limits on current interpreter inaccessible", NULL);
+ return TCL_ERROR;
+ }
+
if (objc == consumedObjc) {
Tcl_Obj *dictPtr;
@@ -4519,6 +4532,19 @@ SlaveTimeLimitCmd(
ScriptLimitCallback *limitCBPtr;
Tcl_HashEntry *hPtr;
+ /*
+ * First, ensure that we are not reading or writing the calling
+ * interpreter's limits; it may only manipulate its children. Note that
+ * the low level API enforces this with Tcl_Panic, which we want to
+ * avoid. [Bug 3398794]
+ */
+
+ if (interp == slaveInterp) {
+ Tcl_AppendResult(interp,
+ "limits on current interpreter inaccessible", NULL);
+ return TCL_ERROR;
+ }
+
if (objc == consumedObjc) {
Tcl_Obj *dictPtr;
diff --git a/generic/tclMain.c b/generic/tclMain.c
index 114d2c3..373e3f6 100644
--- a/generic/tclMain.c
+++ b/generic/tclMain.c
@@ -620,18 +620,19 @@ Tcl_MainEx(
Tcl_Exit(exitCode);
}
-#ifndef UNICODE
-void
+#if (TCL_MAJOR_VERSION == 8) && !defined(UNICODE)
+#undef Tcl_Main
+extern DLLEXPORT void
Tcl_Main(
int argc, /* Number of arguments. */
- TCHAR **argv, /* Array of argument strings. */
+ char **argv, /* Array of argument strings. */
Tcl_AppInitProc *appInitProc)
/* Application-specific initialization
* function to call after most initialization
* but before starting to execute commands. */
{
Tcl_FindExecutable(argv[0]);
- Tcl_MainEx(argc, argv, appInitProc, Tcl_CreateInterp());
+ Tcl_MainEx(argc, argv, appInitProc, Tcl_CreateInterp());
}
#endif
diff --git a/generic/tclOOMethod.c b/generic/tclOOMethod.c
index 4e7edb8..708295a 100644
--- a/generic/tclOOMethod.c
+++ b/generic/tclOOMethod.c
@@ -1595,7 +1595,7 @@ InitEnsembleRewrite(
if (isRootEnsemble) {
iPtr->ensembleRewrite.sourceObjs = objv;
iPtr->ensembleRewrite.numRemovedObjs = toRewrite;
- iPtr->ensembleRewrite.numInsertedObjs = rewriteLength;
+ iPtr->ensembleRewrite.numInsertedObjs = rewriteLength - 1;
} else {
int numIns = iPtr->ensembleRewrite.numInsertedObjs;
diff --git a/generic/tclStrToD.c b/generic/tclStrToD.c
index a55ee83..332cfca 100755
--- a/generic/tclStrToD.c
+++ b/generic/tclStrToD.c
@@ -249,15 +249,6 @@ static const int itens [] = {
100000000
};
-static const Tcl_WideUInt wtens[] = {
- 1, 10, 100, 1000, 10000, 100000, 1000000,
- (Tcl_WideUInt) 1000000*10, (Tcl_WideUInt) 1000000*100,
- (Tcl_WideUInt) 1000000*1000, (Tcl_WideUInt) 1000000*10000,
- (Tcl_WideUInt) 1000000*100000, (Tcl_WideUInt) 1000000*1000000,
- (Tcl_WideUInt) 1000000*1000000*10, (Tcl_WideUInt) 1000000*1000000*100,
- (Tcl_WideUInt) 1000000*1000000*1000,(Tcl_WideUInt) 1000000*1000000*10000
-};
-
static const double bigtens[] = {
1e016, 1e032, 1e064, 1e128, 1e256
};
@@ -1101,7 +1092,10 @@ TclParseNumber(
d = 10 + c - 'a';
} else if (c >= 'A' && c <= 'F') {
d = 10 + c - 'A';
+ } else {
+ goto endgame;
}
+ numSigDigs++;
significandWide = (significandWide << 4) + d;
state = sNANHEX;
break;
diff --git a/generic/tclUtil.c b/generic/tclUtil.c
index 51508d2..31c9fd3 100644
--- a/generic/tclUtil.c
+++ b/generic/tclUtil.c
@@ -3156,7 +3156,8 @@ TclFormatInt(buffer, n)
* negating it produces the same value.
*/
- if (n == -n) {
+ intVal = -n; /* [Bug 3390638] Workaround for*/
+ if (n == -n || intVal == n) { /* broken compiler optimizers. */
return sprintf(buffer, "%ld", n);
}
diff --git a/library/tzdata/Africa/Juba b/library/tzdata/Africa/Juba
new file mode 100644
index 0000000..7495981
--- /dev/null
+++ b/library/tzdata/Africa/Juba
@@ -0,0 +1,39 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Juba) {
+ {-9223372036854775808 7584 0 LMT}
+ {-1230775584 7200 0 CAT}
+ {10360800 10800 1 CAST}
+ {24786000 7200 0 CAT}
+ {41810400 10800 1 CAST}
+ {56322000 7200 0 CAT}
+ {73432800 10800 1 CAST}
+ {87944400 7200 0 CAT}
+ {104882400 10800 1 CAST}
+ {119480400 7200 0 CAT}
+ {136332000 10800 1 CAST}
+ {151016400 7200 0 CAT}
+ {167781600 10800 1 CAST}
+ {182552400 7200 0 CAT}
+ {199231200 10800 1 CAST}
+ {214174800 7200 0 CAT}
+ {230680800 10800 1 CAST}
+ {245710800 7200 0 CAT}
+ {262735200 10800 1 CAST}
+ {277246800 7200 0 CAT}
+ {294184800 10800 1 CAST}
+ {308782800 7200 0 CAT}
+ {325634400 10800 1 CAST}
+ {340405200 7200 0 CAT}
+ {357084000 10800 1 CAST}
+ {371941200 7200 0 CAT}
+ {388533600 10800 1 CAST}
+ {403477200 7200 0 CAT}
+ {419983200 10800 1 CAST}
+ {435013200 7200 0 CAT}
+ {452037600 10800 1 CAST}
+ {466635600 7200 0 CAT}
+ {483487200 10800 1 CAST}
+ {498171600 7200 0 CAT}
+ {947930400 10800 0 EAT}
+}
diff --git a/library/tzdata/America/Goose_Bay b/library/tzdata/America/Goose_Bay
index f93b612..2f6368d 100644
--- a/library/tzdata/America/Goose_Bay
+++ b/library/tzdata/America/Goose_Bay
@@ -157,181 +157,182 @@ set TZData(:America/Goose_Bay) {
{1268539260 -10800 1 ADT}
{1289098860 -14400 0 AST}
{1299988860 -10800 1 ADT}
- {1320548460 -14400 0 AST}
- {1331438460 -10800 1 ADT}
- {1351998060 -14400 0 AST}
- {1362888060 -10800 1 ADT}
- {1383447660 -14400 0 AST}
- {1394337660 -10800 1 ADT}
- {1414897260 -14400 0 AST}
- {1425787260 -10800 1 ADT}
- {1446346860 -14400 0 AST}
- {1457841660 -10800 1 ADT}
- {1478401260 -14400 0 AST}
- {1489291260 -10800 1 ADT}
- {1509850860 -14400 0 AST}
- {1520740860 -10800 1 ADT}
- {1541300460 -14400 0 AST}
- {1552190460 -10800 1 ADT}
- {1572750060 -14400 0 AST}
- {1583640060 -10800 1 ADT}
- {1604199660 -14400 0 AST}
- {1615694460 -10800 1 ADT}
- {1636254060 -14400 0 AST}
- {1647144060 -10800 1 ADT}
- {1667703660 -14400 0 AST}
- {1678593660 -10800 1 ADT}
- {1699153260 -14400 0 AST}
- {1710043260 -10800 1 ADT}
- {1730602860 -14400 0 AST}
- {1741492860 -10800 1 ADT}
- {1762052460 -14400 0 AST}
- {1772942460 -10800 1 ADT}
- {1793502060 -14400 0 AST}
- {1804996860 -10800 1 ADT}
- {1825556460 -14400 0 AST}
- {1836446460 -10800 1 ADT}
- {1857006060 -14400 0 AST}
- {1867896060 -10800 1 ADT}
- {1888455660 -14400 0 AST}
- {1899345660 -10800 1 ADT}
- {1919905260 -14400 0 AST}
- {1930795260 -10800 1 ADT}
- {1951354860 -14400 0 AST}
- {1962849660 -10800 1 ADT}
- {1983409260 -14400 0 AST}
- {1994299260 -10800 1 ADT}
- {2014858860 -14400 0 AST}
- {2025748860 -10800 1 ADT}
- {2046308460 -14400 0 AST}
- {2057198460 -10800 1 ADT}
- {2077758060 -14400 0 AST}
- {2088648060 -10800 1 ADT}
- {2109207660 -14400 0 AST}
- {2120097660 -10800 1 ADT}
- {2140657260 -14400 0 AST}
- {2152152060 -10800 1 ADT}
- {2172711660 -14400 0 AST}
- {2183601660 -10800 1 ADT}
- {2204161260 -14400 0 AST}
- {2215051260 -10800 1 ADT}
- {2235610860 -14400 0 AST}
- {2246500860 -10800 1 ADT}
- {2267060460 -14400 0 AST}
- {2277950460 -10800 1 ADT}
- {2298510060 -14400 0 AST}
- {2309400060 -10800 1 ADT}
- {2329959660 -14400 0 AST}
- {2341454460 -10800 1 ADT}
- {2362014060 -14400 0 AST}
- {2372904060 -10800 1 ADT}
- {2393463660 -14400 0 AST}
- {2404353660 -10800 1 ADT}
- {2424913260 -14400 0 AST}
- {2435803260 -10800 1 ADT}
- {2456362860 -14400 0 AST}
- {2467252860 -10800 1 ADT}
- {2487812460 -14400 0 AST}
- {2499307260 -10800 1 ADT}
- {2519866860 -14400 0 AST}
- {2530756860 -10800 1 ADT}
- {2551316460 -14400 0 AST}
- {2562206460 -10800 1 ADT}
- {2582766060 -14400 0 AST}
- {2593656060 -10800 1 ADT}
- {2614215660 -14400 0 AST}
- {2625105660 -10800 1 ADT}
- {2645665260 -14400 0 AST}
- {2656555260 -10800 1 ADT}
- {2677114860 -14400 0 AST}
- {2688609660 -10800 1 ADT}
- {2709169260 -14400 0 AST}
- {2720059260 -10800 1 ADT}
- {2740618860 -14400 0 AST}
- {2751508860 -10800 1 ADT}
- {2772068460 -14400 0 AST}
- {2782958460 -10800 1 ADT}
- {2803518060 -14400 0 AST}
- {2814408060 -10800 1 ADT}
- {2834967660 -14400 0 AST}
- {2846462460 -10800 1 ADT}
- {2867022060 -14400 0 AST}
- {2877912060 -10800 1 ADT}
- {2898471660 -14400 0 AST}
- {2909361660 -10800 1 ADT}
- {2929921260 -14400 0 AST}
- {2940811260 -10800 1 ADT}
- {2961370860 -14400 0 AST}
- {2972260860 -10800 1 ADT}
- {2992820460 -14400 0 AST}
- {3003710460 -10800 1 ADT}
- {3024270060 -14400 0 AST}
- {3035764860 -10800 1 ADT}
- {3056324460 -14400 0 AST}
- {3067214460 -10800 1 ADT}
- {3087774060 -14400 0 AST}
- {3098664060 -10800 1 ADT}
- {3119223660 -14400 0 AST}
- {3130113660 -10800 1 ADT}
- {3150673260 -14400 0 AST}
- {3161563260 -10800 1 ADT}
- {3182122860 -14400 0 AST}
- {3193012860 -10800 1 ADT}
- {3213572460 -14400 0 AST}
- {3225067260 -10800 1 ADT}
- {3245626860 -14400 0 AST}
- {3256516860 -10800 1 ADT}
- {3277076460 -14400 0 AST}
- {3287966460 -10800 1 ADT}
- {3308526060 -14400 0 AST}
- {3319416060 -10800 1 ADT}
- {3339975660 -14400 0 AST}
- {3350865660 -10800 1 ADT}
- {3371425260 -14400 0 AST}
- {3382920060 -10800 1 ADT}
- {3403479660 -14400 0 AST}
- {3414369660 -10800 1 ADT}
- {3434929260 -14400 0 AST}
- {3445819260 -10800 1 ADT}
- {3466378860 -14400 0 AST}
- {3477268860 -10800 1 ADT}
- {3497828460 -14400 0 AST}
- {3508718460 -10800 1 ADT}
- {3529278060 -14400 0 AST}
- {3540168060 -10800 1 ADT}
- {3560727660 -14400 0 AST}
- {3572222460 -10800 1 ADT}
- {3592782060 -14400 0 AST}
- {3603672060 -10800 1 ADT}
- {3624231660 -14400 0 AST}
- {3635121660 -10800 1 ADT}
- {3655681260 -14400 0 AST}
- {3666571260 -10800 1 ADT}
- {3687130860 -14400 0 AST}
- {3698020860 -10800 1 ADT}
- {3718580460 -14400 0 AST}
- {3730075260 -10800 1 ADT}
- {3750634860 -14400 0 AST}
- {3761524860 -10800 1 ADT}
- {3782084460 -14400 0 AST}
- {3792974460 -10800 1 ADT}
- {3813534060 -14400 0 AST}
- {3824424060 -10800 1 ADT}
- {3844983660 -14400 0 AST}
- {3855873660 -10800 1 ADT}
- {3876433260 -14400 0 AST}
- {3887323260 -10800 1 ADT}
- {3907882860 -14400 0 AST}
- {3919377660 -10800 1 ADT}
- {3939937260 -14400 0 AST}
- {3950827260 -10800 1 ADT}
- {3971386860 -14400 0 AST}
- {3982276860 -10800 1 ADT}
- {4002836460 -14400 0 AST}
- {4013726460 -10800 1 ADT}
- {4034286060 -14400 0 AST}
- {4045176060 -10800 1 ADT}
- {4065735660 -14400 0 AST}
- {4076625660 -10800 1 ADT}
- {4097185260 -14400 0 AST}
+ {1320116400 -10800 0 ADT}
+ {1320555600 -14400 0 AST}
+ {1331445600 -10800 1 ADT}
+ {1352005200 -14400 0 AST}
+ {1362895200 -10800 1 ADT}
+ {1383454800 -14400 0 AST}
+ {1394344800 -10800 1 ADT}
+ {1414904400 -14400 0 AST}
+ {1425794400 -10800 1 ADT}
+ {1446354000 -14400 0 AST}
+ {1457848800 -10800 1 ADT}
+ {1478408400 -14400 0 AST}
+ {1489298400 -10800 1 ADT}
+ {1509858000 -14400 0 AST}
+ {1520748000 -10800 1 ADT}
+ {1541307600 -14400 0 AST}
+ {1552197600 -10800 1 ADT}
+ {1572757200 -14400 0 AST}
+ {1583647200 -10800 1 ADT}
+ {1604206800 -14400 0 AST}
+ {1615701600 -10800 1 ADT}
+ {1636261200 -14400 0 AST}
+ {1647151200 -10800 1 ADT}
+ {1667710800 -14400 0 AST}
+ {1678600800 -10800 1 ADT}
+ {1699160400 -14400 0 AST}
+ {1710050400 -10800 1 ADT}
+ {1730610000 -14400 0 AST}
+ {1741500000 -10800 1 ADT}
+ {1762059600 -14400 0 AST}
+ {1772949600 -10800 1 ADT}
+ {1793509200 -14400 0 AST}
+ {1805004000 -10800 1 ADT}
+ {1825563600 -14400 0 AST}
+ {1836453600 -10800 1 ADT}
+ {1857013200 -14400 0 AST}
+ {1867903200 -10800 1 ADT}
+ {1888462800 -14400 0 AST}
+ {1899352800 -10800 1 ADT}
+ {1919912400 -14400 0 AST}
+ {1930802400 -10800 1 ADT}
+ {1951362000 -14400 0 AST}
+ {1962856800 -10800 1 ADT}
+ {1983416400 -14400 0 AST}
+ {1994306400 -10800 1 ADT}
+ {2014866000 -14400 0 AST}
+ {2025756000 -10800 1 ADT}
+ {2046315600 -14400 0 AST}
+ {2057205600 -10800 1 ADT}
+ {2077765200 -14400 0 AST}
+ {2088655200 -10800 1 ADT}
+ {2109214800 -14400 0 AST}
+ {2120104800 -10800 1 ADT}
+ {2140664400 -14400 0 AST}
+ {2152159200 -10800 1 ADT}
+ {2172718800 -14400 0 AST}
+ {2183608800 -10800 1 ADT}
+ {2204168400 -14400 0 AST}
+ {2215058400 -10800 1 ADT}
+ {2235618000 -14400 0 AST}
+ {2246508000 -10800 1 ADT}
+ {2267067600 -14400 0 AST}
+ {2277957600 -10800 1 ADT}
+ {2298517200 -14400 0 AST}
+ {2309407200 -10800 1 ADT}
+ {2329966800 -14400 0 AST}
+ {2341461600 -10800 1 ADT}
+ {2362021200 -14400 0 AST}
+ {2372911200 -10800 1 ADT}
+ {2393470800 -14400 0 AST}
+ {2404360800 -10800 1 ADT}
+ {2424920400 -14400 0 AST}
+ {2435810400 -10800 1 ADT}
+ {2456370000 -14400 0 AST}
+ {2467260000 -10800 1 ADT}
+ {2487819600 -14400 0 AST}
+ {2499314400 -10800 1 ADT}
+ {2519874000 -14400 0 AST}
+ {2530764000 -10800 1 ADT}
+ {2551323600 -14400 0 AST}
+ {2562213600 -10800 1 ADT}
+ {2582773200 -14400 0 AST}
+ {2593663200 -10800 1 ADT}
+ {2614222800 -14400 0 AST}
+ {2625112800 -10800 1 ADT}
+ {2645672400 -14400 0 AST}
+ {2656562400 -10800 1 ADT}
+ {2677122000 -14400 0 AST}
+ {2688616800 -10800 1 ADT}
+ {2709176400 -14400 0 AST}
+ {2720066400 -10800 1 ADT}
+ {2740626000 -14400 0 AST}
+ {2751516000 -10800 1 ADT}
+ {2772075600 -14400 0 AST}
+ {2782965600 -10800 1 ADT}
+ {2803525200 -14400 0 AST}
+ {2814415200 -10800 1 ADT}
+ {2834974800 -14400 0 AST}
+ {2846469600 -10800 1 ADT}
+ {2867029200 -14400 0 AST}
+ {2877919200 -10800 1 ADT}
+ {2898478800 -14400 0 AST}
+ {2909368800 -10800 1 ADT}
+ {2929928400 -14400 0 AST}
+ {2940818400 -10800 1 ADT}
+ {2961378000 -14400 0 AST}
+ {2972268000 -10800 1 ADT}
+ {2992827600 -14400 0 AST}
+ {3003717600 -10800 1 ADT}
+ {3024277200 -14400 0 AST}
+ {3035772000 -10800 1 ADT}
+ {3056331600 -14400 0 AST}
+ {3067221600 -10800 1 ADT}
+ {3087781200 -14400 0 AST}
+ {3098671200 -10800 1 ADT}
+ {3119230800 -14400 0 AST}
+ {3130120800 -10800 1 ADT}
+ {3150680400 -14400 0 AST}
+ {3161570400 -10800 1 ADT}
+ {3182130000 -14400 0 AST}
+ {3193020000 -10800 1 ADT}
+ {3213579600 -14400 0 AST}
+ {3225074400 -10800 1 ADT}
+ {3245634000 -14400 0 AST}
+ {3256524000 -10800 1 ADT}
+ {3277083600 -14400 0 AST}
+ {3287973600 -10800 1 ADT}
+ {3308533200 -14400 0 AST}
+ {3319423200 -10800 1 ADT}
+ {3339982800 -14400 0 AST}
+ {3350872800 -10800 1 ADT}
+ {3371432400 -14400 0 AST}
+ {3382927200 -10800 1 ADT}
+ {3403486800 -14400 0 AST}
+ {3414376800 -10800 1 ADT}
+ {3434936400 -14400 0 AST}
+ {3445826400 -10800 1 ADT}
+ {3466386000 -14400 0 AST}
+ {3477276000 -10800 1 ADT}
+ {3497835600 -14400 0 AST}
+ {3508725600 -10800 1 ADT}
+ {3529285200 -14400 0 AST}
+ {3540175200 -10800 1 ADT}
+ {3560734800 -14400 0 AST}
+ {3572229600 -10800 1 ADT}
+ {3592789200 -14400 0 AST}
+ {3603679200 -10800 1 ADT}
+ {3624238800 -14400 0 AST}
+ {3635128800 -10800 1 ADT}
+ {3655688400 -14400 0 AST}
+ {3666578400 -10800 1 ADT}
+ {3687138000 -14400 0 AST}
+ {3698028000 -10800 1 ADT}
+ {3718587600 -14400 0 AST}
+ {3730082400 -10800 1 ADT}
+ {3750642000 -14400 0 AST}
+ {3761532000 -10800 1 ADT}
+ {3782091600 -14400 0 AST}
+ {3792981600 -10800 1 ADT}
+ {3813541200 -14400 0 AST}
+ {3824431200 -10800 1 ADT}
+ {3844990800 -14400 0 AST}
+ {3855880800 -10800 1 ADT}
+ {3876440400 -14400 0 AST}
+ {3887330400 -10800 1 ADT}
+ {3907890000 -14400 0 AST}
+ {3919384800 -10800 1 ADT}
+ {3939944400 -14400 0 AST}
+ {3950834400 -10800 1 ADT}
+ {3971394000 -14400 0 AST}
+ {3982284000 -10800 1 ADT}
+ {4002843600 -14400 0 AST}
+ {4013733600 -10800 1 ADT}
+ {4034293200 -14400 0 AST}
+ {4045183200 -10800 1 ADT}
+ {4065742800 -14400 0 AST}
+ {4076632800 -10800 1 ADT}
+ {4097192400 -14400 0 AST}
}
diff --git a/library/tzdata/America/Metlakatla b/library/tzdata/America/Metlakatla
index 19337bf..e8af1c0 100644
--- a/library/tzdata/America/Metlakatla
+++ b/library/tzdata/America/Metlakatla
@@ -40,236 +40,4 @@ set TZData(:America/Metlakatla) {
{404902800 -28800 0 PST}
{420026400 -25200 1 PDT}
{436356000 -28800 0 MeST}
- {452080800 -25200 1 MeST}
- {467802000 -28800 0 MeST}
- {483530400 -25200 1 MeST}
- {499251600 -28800 0 MeST}
- {514980000 -25200 1 MeST}
- {530701200 -28800 0 MeST}
- {544615200 -25200 1 MeST}
- {562150800 -28800 0 MeST}
- {576064800 -25200 1 MeST}
- {594205200 -28800 0 MeST}
- {607514400 -25200 1 MeST}
- {625654800 -28800 0 MeST}
- {638964000 -25200 1 MeST}
- {657104400 -28800 0 MeST}
- {671018400 -25200 1 MeST}
- {688554000 -28800 0 MeST}
- {702468000 -25200 1 MeST}
- {720003600 -28800 0 MeST}
- {733917600 -25200 1 MeST}
- {752058000 -28800 0 MeST}
- {765367200 -25200 1 MeST}
- {783507600 -28800 0 MeST}
- {796816800 -25200 1 MeST}
- {814957200 -28800 0 MeST}
- {828871200 -25200 1 MeST}
- {846406800 -28800 0 MeST}
- {860320800 -25200 1 MeST}
- {877856400 -28800 0 MeST}
- {891770400 -25200 1 MeST}
- {909306000 -28800 0 MeST}
- {923220000 -25200 1 MeST}
- {941360400 -28800 0 MeST}
- {954669600 -25200 1 MeST}
- {972810000 -28800 0 MeST}
- {986119200 -25200 1 MeST}
- {1004259600 -28800 0 MeST}
- {1018173600 -25200 1 MeST}
- {1035709200 -28800 0 MeST}
- {1049623200 -25200 1 MeST}
- {1067158800 -28800 0 MeST}
- {1081072800 -25200 1 MeST}
- {1099213200 -28800 0 MeST}
- {1112522400 -25200 1 MeST}
- {1130662800 -28800 0 MeST}
- {1143972000 -25200 1 MeST}
- {1162112400 -28800 0 MeST}
- {1173607200 -25200 1 MeST}
- {1194166800 -28800 0 MeST}
- {1205056800 -25200 1 MeST}
- {1225616400 -28800 0 MeST}
- {1236506400 -25200 1 MeST}
- {1257066000 -28800 0 MeST}
- {1268560800 -25200 1 MeST}
- {1289120400 -28800 0 MeST}
- {1300010400 -25200 1 MeST}
- {1320570000 -28800 0 MeST}
- {1331460000 -25200 1 MeST}
- {1352019600 -28800 0 MeST}
- {1362909600 -25200 1 MeST}
- {1383469200 -28800 0 MeST}
- {1394359200 -25200 1 MeST}
- {1414918800 -28800 0 MeST}
- {1425808800 -25200 1 MeST}
- {1446368400 -28800 0 MeST}
- {1457863200 -25200 1 MeST}
- {1478422800 -28800 0 MeST}
- {1489312800 -25200 1 MeST}
- {1509872400 -28800 0 MeST}
- {1520762400 -25200 1 MeST}
- {1541322000 -28800 0 MeST}
- {1552212000 -25200 1 MeST}
- {1572771600 -28800 0 MeST}
- {1583661600 -25200 1 MeST}
- {1604221200 -28800 0 MeST}
- {1615716000 -25200 1 MeST}
- {1636275600 -28800 0 MeST}
- {1647165600 -25200 1 MeST}
- {1667725200 -28800 0 MeST}
- {1678615200 -25200 1 MeST}
- {1699174800 -28800 0 MeST}
- {1710064800 -25200 1 MeST}
- {1730624400 -28800 0 MeST}
- {1741514400 -25200 1 MeST}
- {1762074000 -28800 0 MeST}
- {1772964000 -25200 1 MeST}
- {1793523600 -28800 0 MeST}
- {1805018400 -25200 1 MeST}
- {1825578000 -28800 0 MeST}
- {1836468000 -25200 1 MeST}
- {1857027600 -28800 0 MeST}
- {1867917600 -25200 1 MeST}
- {1888477200 -28800 0 MeST}
- {1899367200 -25200 1 MeST}
- {1919926800 -28800 0 MeST}
- {1930816800 -25200 1 MeST}
- {1951376400 -28800 0 MeST}
- {1962871200 -25200 1 MeST}
- {1983430800 -28800 0 MeST}
- {1994320800 -25200 1 MeST}
- {2014880400 -28800 0 MeST}
- {2025770400 -25200 1 MeST}
- {2046330000 -28800 0 MeST}
- {2057220000 -25200 1 MeST}
- {2077779600 -28800 0 MeST}
- {2088669600 -25200 1 MeST}
- {2109229200 -28800 0 MeST}
- {2120119200 -25200 1 MeST}
- {2140678800 -28800 0 MeST}
- {2152173600 -25200 1 MeST}
- {2172733200 -28800 0 MeST}
- {2183623200 -25200 1 MeST}
- {2204182800 -28800 0 MeST}
- {2215072800 -25200 1 MeST}
- {2235632400 -28800 0 MeST}
- {2246522400 -25200 1 MeST}
- {2267082000 -28800 0 MeST}
- {2277972000 -25200 1 MeST}
- {2298531600 -28800 0 MeST}
- {2309421600 -25200 1 MeST}
- {2329981200 -28800 0 MeST}
- {2341476000 -25200 1 MeST}
- {2362035600 -28800 0 MeST}
- {2372925600 -25200 1 MeST}
- {2393485200 -28800 0 MeST}
- {2404375200 -25200 1 MeST}
- {2424934800 -28800 0 MeST}
- {2435824800 -25200 1 MeST}
- {2456384400 -28800 0 MeST}
- {2467274400 -25200 1 MeST}
- {2487834000 -28800 0 MeST}
- {2499328800 -25200 1 MeST}
- {2519888400 -28800 0 MeST}
- {2530778400 -25200 1 MeST}
- {2551338000 -28800 0 MeST}
- {2562228000 -25200 1 MeST}
- {2582787600 -28800 0 MeST}
- {2593677600 -25200 1 MeST}
- {2614237200 -28800 0 MeST}
- {2625127200 -25200 1 MeST}
- {2645686800 -28800 0 MeST}
- {2656576800 -25200 1 MeST}
- {2677136400 -28800 0 MeST}
- {2688631200 -25200 1 MeST}
- {2709190800 -28800 0 MeST}
- {2720080800 -25200 1 MeST}
- {2740640400 -28800 0 MeST}
- {2751530400 -25200 1 MeST}
- {2772090000 -28800 0 MeST}
- {2782980000 -25200 1 MeST}
- {2803539600 -28800 0 MeST}
- {2814429600 -25200 1 MeST}
- {2834989200 -28800 0 MeST}
- {2846484000 -25200 1 MeST}
- {2867043600 -28800 0 MeST}
- {2877933600 -25200 1 MeST}
- {2898493200 -28800 0 MeST}
- {2909383200 -25200 1 MeST}
- {2929942800 -28800 0 MeST}
- {2940832800 -25200 1 MeST}
- {2961392400 -28800 0 MeST}
- {2972282400 -25200 1 MeST}
- {2992842000 -28800 0 MeST}
- {3003732000 -25200 1 MeST}
- {3024291600 -28800 0 MeST}
- {3035786400 -25200 1 MeST}
- {3056346000 -28800 0 MeST}
- {3067236000 -25200 1 MeST}
- {3087795600 -28800 0 MeST}
- {3098685600 -25200 1 MeST}
- {3119245200 -28800 0 MeST}
- {3130135200 -25200 1 MeST}
- {3150694800 -28800 0 MeST}
- {3161584800 -25200 1 MeST}
- {3182144400 -28800 0 MeST}
- {3193034400 -25200 1 MeST}
- {3213594000 -28800 0 MeST}
- {3225088800 -25200 1 MeST}
- {3245648400 -28800 0 MeST}
- {3256538400 -25200 1 MeST}
- {3277098000 -28800 0 MeST}
- {3287988000 -25200 1 MeST}
- {3308547600 -28800 0 MeST}
- {3319437600 -25200 1 MeST}
- {3339997200 -28800 0 MeST}
- {3350887200 -25200 1 MeST}
- {3371446800 -28800 0 MeST}
- {3382941600 -25200 1 MeST}
- {3403501200 -28800 0 MeST}
- {3414391200 -25200 1 MeST}
- {3434950800 -28800 0 MeST}
- {3445840800 -25200 1 MeST}
- {3466400400 -28800 0 MeST}
- {3477290400 -25200 1 MeST}
- {3497850000 -28800 0 MeST}
- {3508740000 -25200 1 MeST}
- {3529299600 -28800 0 MeST}
- {3540189600 -25200 1 MeST}
- {3560749200 -28800 0 MeST}
- {3572244000 -25200 1 MeST}
- {3592803600 -28800 0 MeST}
- {3603693600 -25200 1 MeST}
- {3624253200 -28800 0 MeST}
- {3635143200 -25200 1 MeST}
- {3655702800 -28800 0 MeST}
- {3666592800 -25200 1 MeST}
- {3687152400 -28800 0 MeST}
- {3698042400 -25200 1 MeST}
- {3718602000 -28800 0 MeST}
- {3730096800 -25200 1 MeST}
- {3750656400 -28800 0 MeST}
- {3761546400 -25200 1 MeST}
- {3782106000 -28800 0 MeST}
- {3792996000 -25200 1 MeST}
- {3813555600 -28800 0 MeST}
- {3824445600 -25200 1 MeST}
- {3845005200 -28800 0 MeST}
- {3855895200 -25200 1 MeST}
- {3876454800 -28800 0 MeST}
- {3887344800 -25200 1 MeST}
- {3907904400 -28800 0 MeST}
- {3919399200 -25200 1 MeST}
- {3939958800 -28800 0 MeST}
- {3950848800 -25200 1 MeST}
- {3971408400 -28800 0 MeST}
- {3982298400 -25200 1 MeST}
- {4002858000 -28800 0 MeST}
- {4013748000 -25200 1 MeST}
- {4034307600 -28800 0 MeST}
- {4045197600 -25200 1 MeST}
- {4065757200 -28800 0 MeST}
- {4076647200 -25200 1 MeST}
- {4097206800 -28800 0 MeST}
}
diff --git a/library/tzdata/America/Resolute b/library/tzdata/America/Resolute
index 50ab9df..b4c0bab 100755
--- a/library/tzdata/America/Resolute
+++ b/library/tzdata/America/Resolute
@@ -59,191 +59,190 @@ set TZData(:America/Resolute) {
{1130655600 -21600 0 CST}
{1143964800 -18000 1 CDT}
{1162108800 -18000 0 EST}
- {1162710000 -18000 0 EST}
- {1173596400 -18000 0 CDT}
- {1194159600 -18000 0 EST}
- {1205046000 -18000 0 CDT}
- {1225609200 -18000 0 EST}
- {1236495600 -18000 0 CDT}
- {1257058800 -18000 0 EST}
- {1268550000 -18000 0 CDT}
- {1289113200 -18000 0 EST}
- {1299999600 -18000 0 CDT}
- {1320562800 -18000 0 EST}
- {1331449200 -18000 0 CDT}
- {1352012400 -18000 0 EST}
- {1362898800 -18000 0 CDT}
- {1383462000 -18000 0 EST}
- {1394348400 -18000 0 CDT}
- {1414911600 -18000 0 EST}
- {1425798000 -18000 0 CDT}
- {1446361200 -18000 0 EST}
- {1457852400 -18000 0 CDT}
- {1478415600 -18000 0 EST}
- {1489302000 -18000 0 CDT}
- {1509865200 -18000 0 EST}
- {1520751600 -18000 0 CDT}
- {1541314800 -18000 0 EST}
- {1552201200 -18000 0 CDT}
- {1572764400 -18000 0 EST}
- {1583650800 -18000 0 CDT}
- {1604214000 -18000 0 EST}
- {1615705200 -18000 0 CDT}
- {1636268400 -18000 0 EST}
- {1647154800 -18000 0 CDT}
- {1667718000 -18000 0 EST}
- {1678604400 -18000 0 CDT}
- {1699167600 -18000 0 EST}
- {1710054000 -18000 0 CDT}
- {1730617200 -18000 0 EST}
- {1741503600 -18000 0 CDT}
- {1762066800 -18000 0 EST}
- {1772953200 -18000 0 CDT}
- {1793516400 -18000 0 EST}
- {1805007600 -18000 0 CDT}
- {1825570800 -18000 0 EST}
- {1836457200 -18000 0 CDT}
- {1857020400 -18000 0 EST}
- {1867906800 -18000 0 CDT}
- {1888470000 -18000 0 EST}
- {1899356400 -18000 0 CDT}
- {1919919600 -18000 0 EST}
- {1930806000 -18000 0 CDT}
- {1951369200 -18000 0 EST}
- {1962860400 -18000 0 CDT}
- {1983423600 -18000 0 EST}
- {1994310000 -18000 0 CDT}
- {2014873200 -18000 0 EST}
- {2025759600 -18000 0 CDT}
- {2046322800 -18000 0 EST}
- {2057209200 -18000 0 CDT}
- {2077772400 -18000 0 EST}
- {2088658800 -18000 0 CDT}
- {2109222000 -18000 0 EST}
- {2120108400 -18000 0 CDT}
- {2140671600 -18000 0 EST}
- {2152162800 -18000 0 CDT}
- {2172726000 -18000 0 EST}
- {2183612400 -18000 0 CDT}
- {2204175600 -18000 0 EST}
- {2215062000 -18000 0 CDT}
- {2235625200 -18000 0 EST}
- {2246511600 -18000 0 CDT}
- {2267074800 -18000 0 EST}
- {2277961200 -18000 0 CDT}
- {2298524400 -18000 0 EST}
- {2309410800 -18000 0 CDT}
- {2329974000 -18000 0 EST}
- {2341465200 -18000 0 CDT}
- {2362028400 -18000 0 EST}
- {2372914800 -18000 0 CDT}
- {2393478000 -18000 0 EST}
- {2404364400 -18000 0 CDT}
- {2424927600 -18000 0 EST}
- {2435814000 -18000 0 CDT}
- {2456377200 -18000 0 EST}
- {2467263600 -18000 0 CDT}
- {2487826800 -18000 0 EST}
- {2499318000 -18000 0 CDT}
- {2519881200 -18000 0 EST}
- {2530767600 -18000 0 CDT}
- {2551330800 -18000 0 EST}
- {2562217200 -18000 0 CDT}
- {2582780400 -18000 0 EST}
- {2593666800 -18000 0 CDT}
- {2614230000 -18000 0 EST}
- {2625116400 -18000 0 CDT}
- {2645679600 -18000 0 EST}
- {2656566000 -18000 0 CDT}
- {2677129200 -18000 0 EST}
- {2688620400 -18000 0 CDT}
- {2709183600 -18000 0 EST}
- {2720070000 -18000 0 CDT}
- {2740633200 -18000 0 EST}
- {2751519600 -18000 0 CDT}
- {2772082800 -18000 0 EST}
- {2782969200 -18000 0 CDT}
- {2803532400 -18000 0 EST}
- {2814418800 -18000 0 CDT}
- {2834982000 -18000 0 EST}
- {2846473200 -18000 0 CDT}
- {2867036400 -18000 0 EST}
- {2877922800 -18000 0 CDT}
- {2898486000 -18000 0 EST}
- {2909372400 -18000 0 CDT}
- {2929935600 -18000 0 EST}
- {2940822000 -18000 0 CDT}
- {2961385200 -18000 0 EST}
- {2972271600 -18000 0 CDT}
- {2992834800 -18000 0 EST}
- {3003721200 -18000 0 CDT}
- {3024284400 -18000 0 EST}
- {3035775600 -18000 0 CDT}
- {3056338800 -18000 0 EST}
- {3067225200 -18000 0 CDT}
- {3087788400 -18000 0 EST}
- {3098674800 -18000 0 CDT}
- {3119238000 -18000 0 EST}
- {3130124400 -18000 0 CDT}
- {3150687600 -18000 0 EST}
- {3161574000 -18000 0 CDT}
- {3182137200 -18000 0 EST}
- {3193023600 -18000 0 CDT}
- {3213586800 -18000 0 EST}
- {3225078000 -18000 0 CDT}
- {3245641200 -18000 0 EST}
- {3256527600 -18000 0 CDT}
- {3277090800 -18000 0 EST}
- {3287977200 -18000 0 CDT}
- {3308540400 -18000 0 EST}
- {3319426800 -18000 0 CDT}
- {3339990000 -18000 0 EST}
- {3350876400 -18000 0 CDT}
- {3371439600 -18000 0 EST}
- {3382930800 -18000 0 CDT}
- {3403494000 -18000 0 EST}
- {3414380400 -18000 0 CDT}
- {3434943600 -18000 0 EST}
- {3445830000 -18000 0 CDT}
- {3466393200 -18000 0 EST}
- {3477279600 -18000 0 CDT}
- {3497842800 -18000 0 EST}
- {3508729200 -18000 0 CDT}
- {3529292400 -18000 0 EST}
- {3540178800 -18000 0 CDT}
- {3560742000 -18000 0 EST}
- {3572233200 -18000 0 CDT}
- {3592796400 -18000 0 EST}
- {3603682800 -18000 0 CDT}
- {3624246000 -18000 0 EST}
- {3635132400 -18000 0 CDT}
- {3655695600 -18000 0 EST}
- {3666582000 -18000 0 CDT}
- {3687145200 -18000 0 EST}
- {3698031600 -18000 0 CDT}
- {3718594800 -18000 0 EST}
- {3730086000 -18000 0 CDT}
- {3750649200 -18000 0 EST}
- {3761535600 -18000 0 CDT}
- {3782098800 -18000 0 EST}
- {3792985200 -18000 0 CDT}
- {3813548400 -18000 0 EST}
- {3824434800 -18000 0 CDT}
- {3844998000 -18000 0 EST}
- {3855884400 -18000 0 CDT}
- {3876447600 -18000 0 EST}
- {3887334000 -18000 0 CDT}
- {3907897200 -18000 0 EST}
- {3919388400 -18000 0 CDT}
- {3939951600 -18000 0 EST}
- {3950838000 -18000 0 CDT}
- {3971401200 -18000 0 EST}
- {3982287600 -18000 0 CDT}
- {4002850800 -18000 0 EST}
- {4013737200 -18000 0 CDT}
- {4034300400 -18000 0 EST}
- {4045186800 -18000 0 CDT}
- {4065750000 -18000 0 EST}
- {4076636400 -18000 0 CDT}
- {4097199600 -18000 0 EST}
+ {1173600000 -18000 0 CDT}
+ {1194159600 -21600 0 CST}
+ {1205049600 -18000 1 CDT}
+ {1225609200 -21600 0 CST}
+ {1236499200 -18000 1 CDT}
+ {1257058800 -21600 0 CST}
+ {1268553600 -18000 1 CDT}
+ {1289113200 -21600 0 CST}
+ {1300003200 -18000 1 CDT}
+ {1320562800 -21600 0 CST}
+ {1331452800 -18000 1 CDT}
+ {1352012400 -21600 0 CST}
+ {1362902400 -18000 1 CDT}
+ {1383462000 -21600 0 CST}
+ {1394352000 -18000 1 CDT}
+ {1414911600 -21600 0 CST}
+ {1425801600 -18000 1 CDT}
+ {1446361200 -21600 0 CST}
+ {1457856000 -18000 1 CDT}
+ {1478415600 -21600 0 CST}
+ {1489305600 -18000 1 CDT}
+ {1509865200 -21600 0 CST}
+ {1520755200 -18000 1 CDT}
+ {1541314800 -21600 0 CST}
+ {1552204800 -18000 1 CDT}
+ {1572764400 -21600 0 CST}
+ {1583654400 -18000 1 CDT}
+ {1604214000 -21600 0 CST}
+ {1615708800 -18000 1 CDT}
+ {1636268400 -21600 0 CST}
+ {1647158400 -18000 1 CDT}
+ {1667718000 -21600 0 CST}
+ {1678608000 -18000 1 CDT}
+ {1699167600 -21600 0 CST}
+ {1710057600 -18000 1 CDT}
+ {1730617200 -21600 0 CST}
+ {1741507200 -18000 1 CDT}
+ {1762066800 -21600 0 CST}
+ {1772956800 -18000 1 CDT}
+ {1793516400 -21600 0 CST}
+ {1805011200 -18000 1 CDT}
+ {1825570800 -21600 0 CST}
+ {1836460800 -18000 1 CDT}
+ {1857020400 -21600 0 CST}
+ {1867910400 -18000 1 CDT}
+ {1888470000 -21600 0 CST}
+ {1899360000 -18000 1 CDT}
+ {1919919600 -21600 0 CST}
+ {1930809600 -18000 1 CDT}
+ {1951369200 -21600 0 CST}
+ {1962864000 -18000 1 CDT}
+ {1983423600 -21600 0 CST}
+ {1994313600 -18000 1 CDT}
+ {2014873200 -21600 0 CST}
+ {2025763200 -18000 1 CDT}
+ {2046322800 -21600 0 CST}
+ {2057212800 -18000 1 CDT}
+ {2077772400 -21600 0 CST}
+ {2088662400 -18000 1 CDT}
+ {2109222000 -21600 0 CST}
+ {2120112000 -18000 1 CDT}
+ {2140671600 -21600 0 CST}
+ {2152166400 -18000 1 CDT}
+ {2172726000 -21600 0 CST}
+ {2183616000 -18000 1 CDT}
+ {2204175600 -21600 0 CST}
+ {2215065600 -18000 1 CDT}
+ {2235625200 -21600 0 CST}
+ {2246515200 -18000 1 CDT}
+ {2267074800 -21600 0 CST}
+ {2277964800 -18000 1 CDT}
+ {2298524400 -21600 0 CST}
+ {2309414400 -18000 1 CDT}
+ {2329974000 -21600 0 CST}
+ {2341468800 -18000 1 CDT}
+ {2362028400 -21600 0 CST}
+ {2372918400 -18000 1 CDT}
+ {2393478000 -21600 0 CST}
+ {2404368000 -18000 1 CDT}
+ {2424927600 -21600 0 CST}
+ {2435817600 -18000 1 CDT}
+ {2456377200 -21600 0 CST}
+ {2467267200 -18000 1 CDT}
+ {2487826800 -21600 0 CST}
+ {2499321600 -18000 1 CDT}
+ {2519881200 -21600 0 CST}
+ {2530771200 -18000 1 CDT}
+ {2551330800 -21600 0 CST}
+ {2562220800 -18000 1 CDT}
+ {2582780400 -21600 0 CST}
+ {2593670400 -18000 1 CDT}
+ {2614230000 -21600 0 CST}
+ {2625120000 -18000 1 CDT}
+ {2645679600 -21600 0 CST}
+ {2656569600 -18000 1 CDT}
+ {2677129200 -21600 0 CST}
+ {2688624000 -18000 1 CDT}
+ {2709183600 -21600 0 CST}
+ {2720073600 -18000 1 CDT}
+ {2740633200 -21600 0 CST}
+ {2751523200 -18000 1 CDT}
+ {2772082800 -21600 0 CST}
+ {2782972800 -18000 1 CDT}
+ {2803532400 -21600 0 CST}
+ {2814422400 -18000 1 CDT}
+ {2834982000 -21600 0 CST}
+ {2846476800 -18000 1 CDT}
+ {2867036400 -21600 0 CST}
+ {2877926400 -18000 1 CDT}
+ {2898486000 -21600 0 CST}
+ {2909376000 -18000 1 CDT}
+ {2929935600 -21600 0 CST}
+ {2940825600 -18000 1 CDT}
+ {2961385200 -21600 0 CST}
+ {2972275200 -18000 1 CDT}
+ {2992834800 -21600 0 CST}
+ {3003724800 -18000 1 CDT}
+ {3024284400 -21600 0 CST}
+ {3035779200 -18000 1 CDT}
+ {3056338800 -21600 0 CST}
+ {3067228800 -18000 1 CDT}
+ {3087788400 -21600 0 CST}
+ {3098678400 -18000 1 CDT}
+ {3119238000 -21600 0 CST}
+ {3130128000 -18000 1 CDT}
+ {3150687600 -21600 0 CST}
+ {3161577600 -18000 1 CDT}
+ {3182137200 -21600 0 CST}
+ {3193027200 -18000 1 CDT}
+ {3213586800 -21600 0 CST}
+ {3225081600 -18000 1 CDT}
+ {3245641200 -21600 0 CST}
+ {3256531200 -18000 1 CDT}
+ {3277090800 -21600 0 CST}
+ {3287980800 -18000 1 CDT}
+ {3308540400 -21600 0 CST}
+ {3319430400 -18000 1 CDT}
+ {3339990000 -21600 0 CST}
+ {3350880000 -18000 1 CDT}
+ {3371439600 -21600 0 CST}
+ {3382934400 -18000 1 CDT}
+ {3403494000 -21600 0 CST}
+ {3414384000 -18000 1 CDT}
+ {3434943600 -21600 0 CST}
+ {3445833600 -18000 1 CDT}
+ {3466393200 -21600 0 CST}
+ {3477283200 -18000 1 CDT}
+ {3497842800 -21600 0 CST}
+ {3508732800 -18000 1 CDT}
+ {3529292400 -21600 0 CST}
+ {3540182400 -18000 1 CDT}
+ {3560742000 -21600 0 CST}
+ {3572236800 -18000 1 CDT}
+ {3592796400 -21600 0 CST}
+ {3603686400 -18000 1 CDT}
+ {3624246000 -21600 0 CST}
+ {3635136000 -18000 1 CDT}
+ {3655695600 -21600 0 CST}
+ {3666585600 -18000 1 CDT}
+ {3687145200 -21600 0 CST}
+ {3698035200 -18000 1 CDT}
+ {3718594800 -21600 0 CST}
+ {3730089600 -18000 1 CDT}
+ {3750649200 -21600 0 CST}
+ {3761539200 -18000 1 CDT}
+ {3782098800 -21600 0 CST}
+ {3792988800 -18000 1 CDT}
+ {3813548400 -21600 0 CST}
+ {3824438400 -18000 1 CDT}
+ {3844998000 -21600 0 CST}
+ {3855888000 -18000 1 CDT}
+ {3876447600 -21600 0 CST}
+ {3887337600 -18000 1 CDT}
+ {3907897200 -21600 0 CST}
+ {3919392000 -18000 1 CDT}
+ {3939951600 -21600 0 CST}
+ {3950841600 -18000 1 CDT}
+ {3971401200 -21600 0 CST}
+ {3982291200 -18000 1 CDT}
+ {4002850800 -21600 0 CST}
+ {4013740800 -18000 1 CDT}
+ {4034300400 -21600 0 CST}
+ {4045190400 -18000 1 CDT}
+ {4065750000 -21600 0 CST}
+ {4076640000 -18000 1 CDT}
+ {4097199600 -21600 0 CST}
}
diff --git a/library/tzdata/America/St_Johns b/library/tzdata/America/St_Johns
index 59f92bb..d9ab415 100644
--- a/library/tzdata/America/St_Johns
+++ b/library/tzdata/America/St_Johns
@@ -191,181 +191,182 @@ set TZData(:America/St_Johns) {
{1268537460 -9000 1 NDT}
{1289097060 -12600 0 NST}
{1299987060 -9000 1 NDT}
- {1320546660 -12600 0 NST}
- {1331436660 -9000 1 NDT}
- {1351996260 -12600 0 NST}
- {1362886260 -9000 1 NDT}
- {1383445860 -12600 0 NST}
- {1394335860 -9000 1 NDT}
- {1414895460 -12600 0 NST}
- {1425785460 -9000 1 NDT}
- {1446345060 -12600 0 NST}
- {1457839860 -9000 1 NDT}
- {1478399460 -12600 0 NST}
- {1489289460 -9000 1 NDT}
- {1509849060 -12600 0 NST}
- {1520739060 -9000 1 NDT}
- {1541298660 -12600 0 NST}
- {1552188660 -9000 1 NDT}
- {1572748260 -12600 0 NST}
- {1583638260 -9000 1 NDT}
- {1604197860 -12600 0 NST}
- {1615692660 -9000 1 NDT}
- {1636252260 -12600 0 NST}
- {1647142260 -9000 1 NDT}
- {1667701860 -12600 0 NST}
- {1678591860 -9000 1 NDT}
- {1699151460 -12600 0 NST}
- {1710041460 -9000 1 NDT}
- {1730601060 -12600 0 NST}
- {1741491060 -9000 1 NDT}
- {1762050660 -12600 0 NST}
- {1772940660 -9000 1 NDT}
- {1793500260 -12600 0 NST}
- {1804995060 -9000 1 NDT}
- {1825554660 -12600 0 NST}
- {1836444660 -9000 1 NDT}
- {1857004260 -12600 0 NST}
- {1867894260 -9000 1 NDT}
- {1888453860 -12600 0 NST}
- {1899343860 -9000 1 NDT}
- {1919903460 -12600 0 NST}
- {1930793460 -9000 1 NDT}
- {1951353060 -12600 0 NST}
- {1962847860 -9000 1 NDT}
- {1983407460 -12600 0 NST}
- {1994297460 -9000 1 NDT}
- {2014857060 -12600 0 NST}
- {2025747060 -9000 1 NDT}
- {2046306660 -12600 0 NST}
- {2057196660 -9000 1 NDT}
- {2077756260 -12600 0 NST}
- {2088646260 -9000 1 NDT}
- {2109205860 -12600 0 NST}
- {2120095860 -9000 1 NDT}
- {2140655460 -12600 0 NST}
- {2152150260 -9000 1 NDT}
- {2172709860 -12600 0 NST}
- {2183599860 -9000 1 NDT}
- {2204159460 -12600 0 NST}
- {2215049460 -9000 1 NDT}
- {2235609060 -12600 0 NST}
- {2246499060 -9000 1 NDT}
- {2267058660 -12600 0 NST}
- {2277948660 -9000 1 NDT}
- {2298508260 -12600 0 NST}
- {2309398260 -9000 1 NDT}
- {2329957860 -12600 0 NST}
- {2341452660 -9000 1 NDT}
- {2362012260 -12600 0 NST}
- {2372902260 -9000 1 NDT}
- {2393461860 -12600 0 NST}
- {2404351860 -9000 1 NDT}
- {2424911460 -12600 0 NST}
- {2435801460 -9000 1 NDT}
- {2456361060 -12600 0 NST}
- {2467251060 -9000 1 NDT}
- {2487810660 -12600 0 NST}
- {2499305460 -9000 1 NDT}
- {2519865060 -12600 0 NST}
- {2530755060 -9000 1 NDT}
- {2551314660 -12600 0 NST}
- {2562204660 -9000 1 NDT}
- {2582764260 -12600 0 NST}
- {2593654260 -9000 1 NDT}
- {2614213860 -12600 0 NST}
- {2625103860 -9000 1 NDT}
- {2645663460 -12600 0 NST}
- {2656553460 -9000 1 NDT}
- {2677113060 -12600 0 NST}
- {2688607860 -9000 1 NDT}
- {2709167460 -12600 0 NST}
- {2720057460 -9000 1 NDT}
- {2740617060 -12600 0 NST}
- {2751507060 -9000 1 NDT}
- {2772066660 -12600 0 NST}
- {2782956660 -9000 1 NDT}
- {2803516260 -12600 0 NST}
- {2814406260 -9000 1 NDT}
- {2834965860 -12600 0 NST}
- {2846460660 -9000 1 NDT}
- {2867020260 -12600 0 NST}
- {2877910260 -9000 1 NDT}
- {2898469860 -12600 0 NST}
- {2909359860 -9000 1 NDT}
- {2929919460 -12600 0 NST}
- {2940809460 -9000 1 NDT}
- {2961369060 -12600 0 NST}
- {2972259060 -9000 1 NDT}
- {2992818660 -12600 0 NST}
- {3003708660 -9000 1 NDT}
- {3024268260 -12600 0 NST}
- {3035763060 -9000 1 NDT}
- {3056322660 -12600 0 NST}
- {3067212660 -9000 1 NDT}
- {3087772260 -12600 0 NST}
- {3098662260 -9000 1 NDT}
- {3119221860 -12600 0 NST}
- {3130111860 -9000 1 NDT}
- {3150671460 -12600 0 NST}
- {3161561460 -9000 1 NDT}
- {3182121060 -12600 0 NST}
- {3193011060 -9000 1 NDT}
- {3213570660 -12600 0 NST}
- {3225065460 -9000 1 NDT}
- {3245625060 -12600 0 NST}
- {3256515060 -9000 1 NDT}
- {3277074660 -12600 0 NST}
- {3287964660 -9000 1 NDT}
- {3308524260 -12600 0 NST}
- {3319414260 -9000 1 NDT}
- {3339973860 -12600 0 NST}
- {3350863860 -9000 1 NDT}
- {3371423460 -12600 0 NST}
- {3382918260 -9000 1 NDT}
- {3403477860 -12600 0 NST}
- {3414367860 -9000 1 NDT}
- {3434927460 -12600 0 NST}
- {3445817460 -9000 1 NDT}
- {3466377060 -12600 0 NST}
- {3477267060 -9000 1 NDT}
- {3497826660 -12600 0 NST}
- {3508716660 -9000 1 NDT}
- {3529276260 -12600 0 NST}
- {3540166260 -9000 1 NDT}
- {3560725860 -12600 0 NST}
- {3572220660 -9000 1 NDT}
- {3592780260 -12600 0 NST}
- {3603670260 -9000 1 NDT}
- {3624229860 -12600 0 NST}
- {3635119860 -9000 1 NDT}
- {3655679460 -12600 0 NST}
- {3666569460 -9000 1 NDT}
- {3687129060 -12600 0 NST}
- {3698019060 -9000 1 NDT}
- {3718578660 -12600 0 NST}
- {3730073460 -9000 1 NDT}
- {3750633060 -12600 0 NST}
- {3761523060 -9000 1 NDT}
- {3782082660 -12600 0 NST}
- {3792972660 -9000 1 NDT}
- {3813532260 -12600 0 NST}
- {3824422260 -9000 1 NDT}
- {3844981860 -12600 0 NST}
- {3855871860 -9000 1 NDT}
- {3876431460 -12600 0 NST}
- {3887321460 -9000 1 NDT}
- {3907881060 -12600 0 NST}
- {3919375860 -9000 1 NDT}
- {3939935460 -12600 0 NST}
- {3950825460 -9000 1 NDT}
- {3971385060 -12600 0 NST}
- {3982275060 -9000 1 NDT}
- {4002834660 -12600 0 NST}
- {4013724660 -9000 1 NDT}
- {4034284260 -12600 0 NST}
- {4045174260 -9000 1 NDT}
- {4065733860 -12600 0 NST}
- {4076623860 -9000 1 NDT}
- {4097183460 -12600 0 NST}
+ {1320114600 -9000 0 NDT}
+ {1320553800 -12600 0 NST}
+ {1331443800 -9000 1 NDT}
+ {1352003400 -12600 0 NST}
+ {1362893400 -9000 1 NDT}
+ {1383453000 -12600 0 NST}
+ {1394343000 -9000 1 NDT}
+ {1414902600 -12600 0 NST}
+ {1425792600 -9000 1 NDT}
+ {1446352200 -12600 0 NST}
+ {1457847000 -9000 1 NDT}
+ {1478406600 -12600 0 NST}
+ {1489296600 -9000 1 NDT}
+ {1509856200 -12600 0 NST}
+ {1520746200 -9000 1 NDT}
+ {1541305800 -12600 0 NST}
+ {1552195800 -9000 1 NDT}
+ {1572755400 -12600 0 NST}
+ {1583645400 -9000 1 NDT}
+ {1604205000 -12600 0 NST}
+ {1615699800 -9000 1 NDT}
+ {1636259400 -12600 0 NST}
+ {1647149400 -9000 1 NDT}
+ {1667709000 -12600 0 NST}
+ {1678599000 -9000 1 NDT}
+ {1699158600 -12600 0 NST}
+ {1710048600 -9000 1 NDT}
+ {1730608200 -12600 0 NST}
+ {1741498200 -9000 1 NDT}
+ {1762057800 -12600 0 NST}
+ {1772947800 -9000 1 NDT}
+ {1793507400 -12600 0 NST}
+ {1805002200 -9000 1 NDT}
+ {1825561800 -12600 0 NST}
+ {1836451800 -9000 1 NDT}
+ {1857011400 -12600 0 NST}
+ {1867901400 -9000 1 NDT}
+ {1888461000 -12600 0 NST}
+ {1899351000 -9000 1 NDT}
+ {1919910600 -12600 0 NST}
+ {1930800600 -9000 1 NDT}
+ {1951360200 -12600 0 NST}
+ {1962855000 -9000 1 NDT}
+ {1983414600 -12600 0 NST}
+ {1994304600 -9000 1 NDT}
+ {2014864200 -12600 0 NST}
+ {2025754200 -9000 1 NDT}
+ {2046313800 -12600 0 NST}
+ {2057203800 -9000 1 NDT}
+ {2077763400 -12600 0 NST}
+ {2088653400 -9000 1 NDT}
+ {2109213000 -12600 0 NST}
+ {2120103000 -9000 1 NDT}
+ {2140662600 -12600 0 NST}
+ {2152157400 -9000 1 NDT}
+ {2172717000 -12600 0 NST}
+ {2183607000 -9000 1 NDT}
+ {2204166600 -12600 0 NST}
+ {2215056600 -9000 1 NDT}
+ {2235616200 -12600 0 NST}
+ {2246506200 -9000 1 NDT}
+ {2267065800 -12600 0 NST}
+ {2277955800 -9000 1 NDT}
+ {2298515400 -12600 0 NST}
+ {2309405400 -9000 1 NDT}
+ {2329965000 -12600 0 NST}
+ {2341459800 -9000 1 NDT}
+ {2362019400 -12600 0 NST}
+ {2372909400 -9000 1 NDT}
+ {2393469000 -12600 0 NST}
+ {2404359000 -9000 1 NDT}
+ {2424918600 -12600 0 NST}
+ {2435808600 -9000 1 NDT}
+ {2456368200 -12600 0 NST}
+ {2467258200 -9000 1 NDT}
+ {2487817800 -12600 0 NST}
+ {2499312600 -9000 1 NDT}
+ {2519872200 -12600 0 NST}
+ {2530762200 -9000 1 NDT}
+ {2551321800 -12600 0 NST}
+ {2562211800 -9000 1 NDT}
+ {2582771400 -12600 0 NST}
+ {2593661400 -9000 1 NDT}
+ {2614221000 -12600 0 NST}
+ {2625111000 -9000 1 NDT}
+ {2645670600 -12600 0 NST}
+ {2656560600 -9000 1 NDT}
+ {2677120200 -12600 0 NST}
+ {2688615000 -9000 1 NDT}
+ {2709174600 -12600 0 NST}
+ {2720064600 -9000 1 NDT}
+ {2740624200 -12600 0 NST}
+ {2751514200 -9000 1 NDT}
+ {2772073800 -12600 0 NST}
+ {2782963800 -9000 1 NDT}
+ {2803523400 -12600 0 NST}
+ {2814413400 -9000 1 NDT}
+ {2834973000 -12600 0 NST}
+ {2846467800 -9000 1 NDT}
+ {2867027400 -12600 0 NST}
+ {2877917400 -9000 1 NDT}
+ {2898477000 -12600 0 NST}
+ {2909367000 -9000 1 NDT}
+ {2929926600 -12600 0 NST}
+ {2940816600 -9000 1 NDT}
+ {2961376200 -12600 0 NST}
+ {2972266200 -9000 1 NDT}
+ {2992825800 -12600 0 NST}
+ {3003715800 -9000 1 NDT}
+ {3024275400 -12600 0 NST}
+ {3035770200 -9000 1 NDT}
+ {3056329800 -12600 0 NST}
+ {3067219800 -9000 1 NDT}
+ {3087779400 -12600 0 NST}
+ {3098669400 -9000 1 NDT}
+ {3119229000 -12600 0 NST}
+ {3130119000 -9000 1 NDT}
+ {3150678600 -12600 0 NST}
+ {3161568600 -9000 1 NDT}
+ {3182128200 -12600 0 NST}
+ {3193018200 -9000 1 NDT}
+ {3213577800 -12600 0 NST}
+ {3225072600 -9000 1 NDT}
+ {3245632200 -12600 0 NST}
+ {3256522200 -9000 1 NDT}
+ {3277081800 -12600 0 NST}
+ {3287971800 -9000 1 NDT}
+ {3308531400 -12600 0 NST}
+ {3319421400 -9000 1 NDT}
+ {3339981000 -12600 0 NST}
+ {3350871000 -9000 1 NDT}
+ {3371430600 -12600 0 NST}
+ {3382925400 -9000 1 NDT}
+ {3403485000 -12600 0 NST}
+ {3414375000 -9000 1 NDT}
+ {3434934600 -12600 0 NST}
+ {3445824600 -9000 1 NDT}
+ {3466384200 -12600 0 NST}
+ {3477274200 -9000 1 NDT}
+ {3497833800 -12600 0 NST}
+ {3508723800 -9000 1 NDT}
+ {3529283400 -12600 0 NST}
+ {3540173400 -9000 1 NDT}
+ {3560733000 -12600 0 NST}
+ {3572227800 -9000 1 NDT}
+ {3592787400 -12600 0 NST}
+ {3603677400 -9000 1 NDT}
+ {3624237000 -12600 0 NST}
+ {3635127000 -9000 1 NDT}
+ {3655686600 -12600 0 NST}
+ {3666576600 -9000 1 NDT}
+ {3687136200 -12600 0 NST}
+ {3698026200 -9000 1 NDT}
+ {3718585800 -12600 0 NST}
+ {3730080600 -9000 1 NDT}
+ {3750640200 -12600 0 NST}
+ {3761530200 -9000 1 NDT}
+ {3782089800 -12600 0 NST}
+ {3792979800 -9000 1 NDT}
+ {3813539400 -12600 0 NST}
+ {3824429400 -9000 1 NDT}
+ {3844989000 -12600 0 NST}
+ {3855879000 -9000 1 NDT}
+ {3876438600 -12600 0 NST}
+ {3887328600 -9000 1 NDT}
+ {3907888200 -12600 0 NST}
+ {3919383000 -9000 1 NDT}
+ {3939942600 -12600 0 NST}
+ {3950832600 -9000 1 NDT}
+ {3971392200 -12600 0 NST}
+ {3982282200 -9000 1 NDT}
+ {4002841800 -12600 0 NST}
+ {4013731800 -9000 1 NDT}
+ {4034291400 -12600 0 NST}
+ {4045181400 -9000 1 NDT}
+ {4065741000 -12600 0 NST}
+ {4076631000 -9000 1 NDT}
+ {4097190600 -12600 0 NST}
}
diff --git a/library/tzdata/Europe/Kaliningrad b/library/tzdata/Europe/Kaliningrad
index 02b45d4..1b898c3 100644
--- a/library/tzdata/Europe/Kaliningrad
+++ b/library/tzdata/Europe/Kaliningrad
@@ -80,5 +80,5 @@ set TZData(:Europe/Kaliningrad) {
{1256428800 7200 0 EET}
{1269734400 10800 1 EEST}
{1288483200 7200 0 EET}
- {1301184000 10800 0 EET}
+ {1301184000 10800 0 KALT}
}
diff --git a/library/tzdata/Pacific/Apia b/library/tzdata/Pacific/Apia
index 25b047d..1a34cac 100644
--- a/library/tzdata/Pacific/Apia
+++ b/library/tzdata/Pacific/Apia
@@ -7,4 +7,5 @@ set TZData(:Pacific/Apia) {
{-631110600 -39600 0 WST}
{1285498800 -36000 1 WSDT}
{1301752800 -39600 0 WST}
+ {1325242800 46800 0 WST}
}
diff --git a/library/tzdata/Pacific/Honolulu b/library/tzdata/Pacific/Honolulu
index e24b096..5e70598 100644
--- a/library/tzdata/Pacific/Honolulu
+++ b/library/tzdata/Pacific/Honolulu
@@ -6,5 +6,6 @@ set TZData(:Pacific/Honolulu) {
{-1157283000 -34200 1 HDT}
{-1155436200 -37800 0 HST}
{-880198200 -34200 1 HDT}
+ {-765376200 -37800 0 HST}
{-712150200 -36000 0 HST}
}
diff --git a/tests/binary.test b/tests/binary.test
index 8b2880b..6c00508 100644
--- a/tests/binary.test
+++ b/tests/binary.test
@@ -2381,6 +2381,23 @@ test binary-63.4 {NaN} ieeeFloatingPoint {
format 0x%016lx [expr {$w & 0xfff3ffffffffffff}]
} 0x7ff3123456789abc
+# Make sure TclParseNumber() rejects invalid nan-hex formats [Bug 3402540]
+test binary-63.5 {NaN} -constraints ieeeFloatingPoint -body {
+ binary format q Nan(
+} -returnCodes error -match glob -result {expected floating-point number*}
+test binary-63.6 {NaN} -constraints ieeeFloatingPoint -body {
+ binary format q Nan()
+} -returnCodes error -match glob -result {expected floating-point number*}
+test binary-63.7 {NaN} -constraints ieeeFloatingPoint -body {
+ binary format q Nan(g)
+} -returnCodes error -match glob -result {expected floating-point number*}
+test binary-63.8 {NaN} -constraints ieeeFloatingPoint -body {
+ binary format q Nan(1,2)
+} -returnCodes error -match glob -result {expected floating-point number*}
+test binary-63.9 {NaN} -constraints ieeeFloatingPoint -body {
+ binary format q Nan(1234567890abcd)
+} -returnCodes error -match glob -result {expected floating-point number*}
+
test binary-64.1 {NaN} -constraints ieeeFloatingPoint -body {
binary scan [binary format w 0x7ff8000000000000] q d
set d
diff --git a/tests/chanio.test b/tests/chanio.test
index 5569385..fbc9854 100644
--- a/tests/chanio.test
+++ b/tests/chanio.test
@@ -37,7 +37,7 @@ namespace eval ::tcl::test::io {
testConstraint testfevent [llength [info commands testfevent]]
testConstraint testchannelevent [llength [info commands testchannelevent]]
testConstraint testmainthread [llength [info commands testmainthread]]
- testConstraint testthread [llength [info commands testthread]]
+ testConstraint thread [expr {0 == [catch {package require Thread 2.6}]}]
# You need a *very* special environment to do some tests. In particular,
# many file systems do not support large-files...
@@ -7413,7 +7413,6 @@ test chan-io-59.1 {Thread reference of channels} {testmainthread testchannel} {
# More complicated tests (like that the reference changes as a channel is
# moved from thread to thread) can be done only in the extension which
# fully implements the moving of channels between threads, i.e. 'Threads'.
- # Or we have to extend [testthread] as well.
set f [open $path(longfile) r]
set result [testchannel mthread $f]
chan close $f
@@ -7494,37 +7493,26 @@ test chan-io-70.0 {Cutting & Splicing channels} -setup {
chan close $c
removeFile cutsplice
} -result {0 1 0}
-# Duplicate of code in "thread.test". Find a better way of doing this without
-# duplication. Maybe placement into a proc which transforms to nop after the
-# first call, and placement of its defintion in a central location.
-if {[testConstraint testthread]} {
- testthread errorproc ThreadError
- proc ThreadError {id info} {
- global threadError
- set threadError $info
- }
- proc ThreadNullError {id info} {
- # ignore
- }
-}
+
test chan-io-70.1 {Transfer channel} -setup {
set f [makeFile {... dummy ...} cutsplice]
set res {}
-} -constraints {testchannel testthread} -body {
+} -constraints {testchannel thread} -body {
set c [open $f r]
lappend res [catch {chan seek $c 0 start}]
testchannel cut $c
lappend res [catch {chan seek $c 0 start}]
- set tid [testthread create]
- testthread send $tid [list set c $c]
- lappend res [testthread send $tid {
+ set tid [thread::create -preserved]
+ thread::send $tid [list set c $c]
+ thread::send $tid {load {} Tcltest}
+ lappend res [thread::send $tid {
testchannel splice $c
set res [catch {chan seek $c 0 start}]
chan close $c
set res
}]
} -cleanup {
- tcltest::threadReap
+ thread::release $tid
removeFile cutsplice
} -result {0 1 0}
diff --git a/tests/http.test b/tests/http.test
index 1f4d8b4..e6e7649 100644
--- a/tests/http.test
+++ b/tests/http.test
@@ -51,14 +51,13 @@ if {![file exists $httpdFile]} {
set removeHttpd 1
}
-if {[info commands testthread] == "testthread" && [file exists $httpdFile]} {
- set httpthread [testthread create "
- source [list $httpdFile]
- testthread wait
- "]
- testthread send $httpthread [list set port $port]
- testthread send $httpthread [list set bindata $bindata]
- testthread send $httpthread {httpd_init $port}
+catch {package require Thread 2.6}
+if {[catch {package present Thread}] == 0 && [file exists $httpdFile]} {
+ set httpthread [thread::create -preserved]
+ thread::send $httpthread [list source $httpdFile]
+ thread::send $httpthread [list set port $port]
+ thread::send $httpthread [list set bindata $bindata]
+ thread::send $httpthread {httpd_init $port}
puts "Running httpd in thread $httpthread"
} else {
if {![file exists $httpdFile]} {
@@ -590,9 +589,7 @@ catch {unset badurl}
catch {unset port}
catch {unset data}
if {[info exists httpthread]} {
- testthread send -async $httpthread {
- testthread exit
- }
+ thread::release $httpthread
} else {
close $listen
}
diff --git a/tests/interp.test b/tests/interp.test
index 35f6824..c146355 100644
--- a/tests/interp.test
+++ b/tests/interp.test
@@ -584,7 +584,6 @@ test interp-14.10 {testing interp-alias: error messages} -setup {
invoked from within
"a 1"}
-
# part 15: testing file sharing
test interp-15.1 {testing file sharing} {
catch {interp delete z}
@@ -665,8 +664,7 @@ test interp-15.8 {testing file transferring} -body {
# Torture tests for interpreter deletion order
#
proc kill {} {interp delete xxx}
-
-test interp-15.9 {testing deletion order} {
+test interp-16.0 {testing deletion order} {
catch {interp delete xxx}
interp create xxx
xxx alias kill kill
@@ -3497,6 +3495,13 @@ test interp-35.22 {interp time limits normalize milliseconds} -body {
} -cleanup {
interp delete $i
} -result {2 500}
+# Bug 3398794
+test interp-35.23 {interp command limits can't touch current interp} -body {
+ interp limit {} commands -value 10
+} -returnCodes error -result {limits on current interpreter inaccessible}
+test interp-35.24 {interp time limits can't touch current interp} -body {
+ interp limit {} time -seconds 2
+} -returnCodes error -result {limits on current interpreter inaccessible}
test interp-36.1 {interp bgerror syntax} -body {
interp bgerror
@@ -3610,7 +3615,6 @@ test interp-38.8 {interp debug basic setup} -body {
} -returnCodes {
error
} -result {wrong # args: should be "interp debug path ?-frame ?bool??"}
-
# cleanup
unset -nocomplain hidden_cmds
diff --git a/tests/io.test b/tests/io.test
index e28948f..8a7cc51 100644
--- a/tests/io.test
+++ b/tests/io.test
@@ -37,7 +37,7 @@ testConstraint fcopy [llength [info commands fcopy]]
testConstraint testfevent [llength [info commands testfevent]]
testConstraint testchannelevent [llength [info commands testchannelevent]]
testConstraint testmainthread [llength [info commands testmainthread]]
-testConstraint testthread [llength [info commands testthread]]
+testConstraint thread [expr {0 == [catch {package require Thread 2.6}]}]
# You need a *very* special environment to do some tests. In
# particular, many file systems do not support large-files...
@@ -7435,7 +7435,7 @@ test io-59.1 {Thread reference of channels} {testmainthread testchannel} {
# More complicated tests (like that the reference changes as a
# channel is moved from thread to thread) can be done only in the
# extension which fully implements the moving of channels between
- # threads, i.e. 'Threads'. Or we have to extend [testthread] as well.
+ # threads, i.e. 'Threads'.
set f [open $path(longfile) r]
set result [testchannel mthread $f]
@@ -7527,25 +7527,7 @@ test io-70.0 {Cutting & Splicing channels} {testchannel} {
} {0 1 0}
-# Duplicate of code in "thread.test". Find a better way of doing this
-# without duplication. Maybe placement into a proc which transforms to
-# nop after the first call, and placement of its defintion in a
-# central location.
-
-if {[testConstraint testthread]} {
- testthread errorproc ThreadError
-
- proc ThreadError {id info} {
- global threadError
- set threadError $info
- }
-
- proc ThreadNullError {id info} {
- # ignore
- }
-}
-
-test io-70.1 {Transfer channel} {testchannel testthread} {
+test io-70.1 {Transfer channel} {testchannel thread} {
set f [makeFile {... dummy ...} cutsplice]
set c [open $f r]
@@ -7554,16 +7536,17 @@ test io-70.1 {Transfer channel} {testchannel testthread} {
testchannel cut $c
lappend res [catch {seek $c 0 start}]
- set tid [testthread create]
- testthread send $tid [list set c $c]
- lappend res [testthread send $tid {
+ set tid [thread::create -preserved]
+ thread::send $tid [list set c $c]
+ thread::send $tid {load {} Tcltest}
+ lappend res [thread::send $tid {
testchannel splice $c
set res [catch {seek $c 0 start}]
close $c
set res
}]
- tcltest::threadReap
+ thread::release $tid
removeFile cutsplice
set res
diff --git a/tests/oo.test b/tests/oo.test
index b12cb42..5ec5d2f 100644
--- a/tests/oo.test
+++ b/tests/oo.test
@@ -748,6 +748,138 @@ test oo-6.7 {OO: forward resolution scope is per-object} -setup {
} -cleanup {
fooClass destroy
} -result 1
+test oo-6.8 {Bug 3400658: forwarding and wrongargs rewriting} -setup {
+ oo::class create fooClass
+} -body {
+ oo::define fooClass {
+ forward test my handler
+ method handler {a b c} {}
+ }
+ fooClass create ::foo
+ foo test
+} -returnCodes error -cleanup {
+ fooClass destroy
+} -result {wrong # args: should be "foo test a b c"}
+test oo-6.9 {Bug 3400658: forwarding and wrongargs rewriting} -setup {
+ oo::class create fooClass
+} -body {
+ oo::define fooClass {
+ forward test my handler
+ method handler {a b c} {list $a,$b,$c}
+ }
+ fooClass create ::foo
+ foo test 1 2 3
+} -cleanup {
+ fooClass destroy
+} -result 1,2,3
+test oo-6.10 {Bug 3400658: forwarding and wrongargs rewriting} -setup {
+ oo::class create fooClass
+} -body {
+ oo::define fooClass {
+ forward test my handler
+ method handler {a b c} {list $a,$b,$c}
+ }
+ fooClass create ::foo
+ foo test 1 2
+} -returnCodes error -cleanup {
+ fooClass destroy
+} -result {wrong # args: should be "foo test a b c"}
+test oo-6.11 {Bug 3400658: forwarding and wrongargs rewriting} -setup {
+ oo::object create foo
+} -body {
+ oo::objdefine foo {
+ forward test my handler
+ method handler {a b c} {}
+ }
+ foo test
+} -returnCodes error -cleanup {
+ foo destroy
+} -result {wrong # args: should be "foo test a b c"}
+test oo-6.12 {Bug 3400658: forwarding and wrongargs rewriting} -setup {
+ oo::object create foo
+} -body {
+ oo::objdefine foo {
+ forward test my handler
+ method handler {a b c} {list $a,$b,$c}
+ }
+ foo test 1 2 3
+} -cleanup {
+ foo destroy
+} -result 1,2,3
+test oo-6.13 {Bug 3400658: forwarding and wrongargs rewriting} -setup {
+ oo::object create foo
+} -body {
+ oo::objdefine foo {
+ forward test my handler
+ method handler {a b c} {list $a,$b,$c}
+ }
+ foo test 1 2
+} -returnCodes error -cleanup {
+ foo destroy
+} -result {wrong # args: should be "foo test a b c"}
+test oo-6.14 {Bug 3400658: forwarding and wrongargs rewriting - multistep} -setup {
+ oo::class create fooClass
+} -body {
+ oo::define fooClass {
+ forward test my handler1 p
+ forward handler1 my handler q
+ method handler {a b c} {}
+ }
+ fooClass create ::foo
+ foo test
+} -returnCodes error -cleanup {
+ fooClass destroy
+} -result {wrong # args: should be "foo test c"}
+test oo-6.15 {Bug 3400658: forwarding and wrongargs rewriting - multistep} -setup {
+ oo::class create fooClass
+} -body {
+ oo::define fooClass {
+ forward test my handler1 p
+ forward handler1 my handler q
+ method handler {a b c} {list $a,$b,$c}
+ }
+ fooClass create ::foo
+ foo test 1
+} -cleanup {
+ fooClass destroy
+} -result q,p,1
+test oo-6.16 {Bug 3400658: forwarding and wrongargs rewriting - via alias} -setup {
+ oo::class create fooClass
+} -body {
+ oo::define fooClass {
+ forward test handler1 foo bar
+ forward handler2 my handler x
+ method handler {a b c d} {list $a,$b,$c,$d}
+ export eval
+ }
+ fooClass create ::foo
+ foo eval {
+ interp alias {} [namespace current]::handler1 \
+ {} [namespace current]::my handler2
+ }
+ foo test 1 2 3
+} -returnCodes error -cleanup {
+ fooClass destroy
+} -result {wrong # args: should be "foo test d"}
+test oo-6.17 {Bug 3400658: forwarding and wrongargs rewriting - via ensemble} -setup {
+ oo::class create fooClass
+} -constraints knownBug -body {
+ oo::define fooClass {
+ forward test handler1 foo bar boo
+ forward handler2 my handler
+ method handler {a b c d} {list $a,$b,$c,$d}
+ export eval
+ }
+ fooClass create ::foo
+ foo eval {
+ namespace ensemble create \
+ -command [namespace current]::handler1 -parameters {p q} \
+ -map [list boo [list [namespace current]::my handler2]]
+ }
+ foo test 1 2 3
+} -returnCodes error -cleanup {
+ fooClass destroy
+} -result {wrong # args: should be "foo test c d"}
test oo-7.1 {OO: inheritance 101} -setup {
oo::class create superClass
diff --git a/tests/parseExpr.test b/tests/parseExpr.test
index 7673dbe..cd0342a 100644
--- a/tests/parseExpr.test
+++ b/tests/parseExpr.test
@@ -997,6 +997,72 @@ test parseExpr-21.63 {error message} -body {
} -returnCodes error -result "missing close-brace
in expression \"...12345678901234567890*\[\{abcdefghijklmnopqrstuv...\""
+test parseExpr-22.1 {Bug 3401704} -constraints testexprparser -body {
+ testexprparser 2a() 1
+} -result {- {} 0 subexpr 2 1 text 2 0 {}}
+test parseExpr-22.2 {Bug 3401704} -constraints testexprparser -body {
+ testexprparser nana() 3
+} -result {- {} 0 subexpr nan 1 text nan 0 {}}
+test parseExpr-22.3 {Bug 3401704} -constraints testexprparser -body {
+ testexprparser 2a() -1
+} -result {- {} 0 subexpr 2a() 1 operator 2a 0 {}}
+test parseExpr-22.4 {Bug 3401704} -constraints testexprparser -body {
+ testexprparser nana() -1
+} -result {- {} 0 subexpr nana() 1 operator nana 0 {}}
+test parseExpr-22.5 {Bug 3401704} -constraints testexprparser -body {
+ testexprparser nan9() -1
+} -result {- {} 0 subexpr nan9() 1 operator nan9 0 {}}
+test parseExpr-22.6 {Bug 3401704} -constraints testexprparser -body {
+ testexprparser 2_() -1
+} -result {- {} 0 subexpr 2_() 1 operator 2_ 0 {}}
+test parseExpr-22.7 {Bug 3401704} -constraints testexprparser -body {
+ testexprparser nan_() -1
+} -result {- {} 0 subexpr nan_() 1 operator nan_ 0 {}}
+test parseExpr-22.8 {Bug 3401704} -constraints testexprparser -body {
+ catch {testexprparser nan!() -1} m o
+ dict get $o -errorcode
+} -result {TCL PARSE EXPR MISSING}
+test parseExpr-22.9 {Bug 3401704} -constraints testexprparser -body {
+ testexprparser 1e3_() -1
+} -result {- {} 0 subexpr 1e3_() 1 operator 1e3_ 0 {}}
+test parseExpr-22.10 {Bug 3401704} -constraints testexprparser -body {
+ catch {testexprparser 1.3_() -1} m o
+ dict get $o -errorcode
+} -result {TCL PARSE EXPR BADCHAR}
+test parseExpr-22.11 {Bug 3401704} -constraints testexprparser -body {
+ catch {testexprparser 1e-3_() -1} m o
+ dict get $o -errorcode
+} -result {TCL PARSE EXPR BADCHAR}
+test parseExpr-22.12 {Bug 3401704} -constraints testexprparser -body {
+ catch {testexprparser naneq() -1} m o
+ dict get $o -errorcode
+} -result {TCL PARSE EXPR EMPTY}
+test parseExpr-22.13 {Bug 3401704} -constraints testexprparser -body {
+ testexprparser naner() -1
+} -result {- {} 0 subexpr naner() 1 operator naner 0 {}}
+
+test parseExpr-22.14 {Bug 3401704} -constraints testexprparser -body {
+ catch {testexprparser 08 -1} m o
+ dict get $o -errorcode
+} -result {TCL PARSE EXPR BADNUMBER OCTAL}
+test parseExpr-22.15 {Bug 3401704} -constraints testexprparser -body {
+ catch {testexprparser 0o8 -1} m o
+ dict get $o -errorcode
+} -result {TCL PARSE EXPR BADNUMBER OCTAL}
+test parseExpr-22.16 {Bug 3401704} -constraints testexprparser -body {
+ catch {testexprparser 0o08 -1} m o
+ dict get $o -errorcode
+} -result {TCL PARSE EXPR BADNUMBER OCTAL}
+test parseExpr-22.17 {Bug 3401704} -constraints testexprparser -body {
+ catch {testexprparser 0b2 -1} m o
+ dict get $o -errorcode
+} -result {TCL PARSE EXPR BADNUMBER BINARY}
+test parseExpr-22.18 {Bug 3401704} -constraints testexprparser -body {
+ catch {testexprparser 0b02 -1} m o
+ dict get $o -errorcode
+} -result {TCL PARSE EXPR BADNUMBER BINARY}
+
+
# cleanup
::tcltest::cleanupTests
return
diff --git a/tests/scan.test b/tests/scan.test
index 84f22b4..97ad5eb 100644
--- a/tests/scan.test
+++ b/tests/scan.test
@@ -753,11 +753,11 @@ testConstraint ieeeFloatingPoint [testIEEE]
# scan infinities - not working
-test scan-14.1 {infinity} ieeeFloatingPoint {
+test scan-14.1 {infinity} {
scan Inf %g d
set d
} Inf
-test scan-14.2 {infinity} ieeeFloatingPoint {
+test scan-14.2 {infinity} {
scan -Inf %g d
set d
} -Inf
diff --git a/tests/socket.test b/tests/socket.test
index 0ea0eb5..58eb3ee 100644
--- a/tests/socket.test
+++ b/tests/socket.test
@@ -63,8 +63,8 @@
package require tcltest 2
namespace import -force ::tcltest::*
-# Some tests require the testthread and exec commands
-testConstraint testthread [llength [info commands testthread]]
+# Some tests require the Thread package or exec command
+testConstraint thread [expr {0 == [catch {package require Thread 2.6}]}]
testConstraint exec [llength [info commands exec]]
# Produce a random port number in the Dynamic/Private range
@@ -1672,9 +1672,9 @@ test socket_$af-12.3 {testing inheritance of accepted sockets} -setup {
catch {close $p}
} -result {accepted socket was not inherited}
-test socket_$af-13.1 {Testing use of shared socket between two threads} -setup {
- threadReap
- set path(script) [makeFile [string map [list @localhost@ $localhost] {
+test socket_$af-13.1 {Testing use of shared socket between two threads} -body {
+ # create a thread
+ set serverthread [thread::create -preserved [string map [list @localhost@ $localhost] {
set f [socket -server accept -myaddr @localhost@ 0]
set listen [lindex [fconfigure $f -sockname] 2]
proc accept {s a p} {
@@ -1696,15 +1696,8 @@ test socket_$af-13.1 {Testing use of shared socket between two threads} -setup {
set i 0
vwait x
close $f
- # thread cleans itself up.
- testthread exit
- }] script]
-} -constraints [list socket supported_$af testthread] -body {
- # create a thread
- set serverthread [testthread create [list source $path(script) ] ]
- update
- set port [testthread send $serverthread {set listen}]
- update
+ }]]
+ set port [thread::send $serverthread {set listen}]
set s [socket $localhost $port]
fconfigure $s -buffering line
catch {
@@ -1712,11 +1705,9 @@ test socket_$af-13.1 {Testing use of shared socket between two threads} -setup {
gets $s result
}
close $s
- update
- append result " " [threadReap]
-} -cleanup {
- removeFile script
-} -result {hello 1}
+ thread::release $serverthread
+ append result " " [llength [thread::names]]
+} -result {hello 1} -constraints [list socket supported_$af thread]
# ----------------------------------------------------------------------
diff --git a/tests/thread.test b/tests/thread.test
index a6961ed..6cd4b5d 100644
--- a/tests/thread.test
+++ b/tests/thread.test
@@ -19,6 +19,7 @@ if {[lsearch [namespace children] ::tcltest] == -1} {
# Some tests require the testthread command
testConstraint testthread [expr {[info commands testthread] != {}}]
+testConstraint thread [expr {0 == [catch {package require Thread 2.6}]}]
if {[testConstraint testthread]} {
testthread errorproc ThreadError
@@ -41,40 +42,34 @@ test thread-1.1 {Tcl_ThreadObjCmd: no args} {testthread} {
test thread-1.2 {Tcl_ThreadObjCmd: bad option} {testthread} {
list [catch {testthread foo} msg] $msg
} {1 {bad option "foo": must be cancel, create, event, exit, id, join, names, send, wait, or errorproc}}
-test thread-1.3 {Tcl_ThreadObjCmd: initial thread list} {testthread} {
- list [threadReap] [llength [testthread names]]
-} {1 1}
-test thread-1.4 {Tcl_ThreadObjCmd: thread create } {testthread} {
- threadReap
- set serverthread [testthread create]
- update
- set numthreads [llength [testthread names]]
- threadReap
+test thread-1.3 {Tcl_ThreadObjCmd: initial thread list} {thread} {
+ llength [thread::names]
+} 1
+test thread-1.4 {Tcl_ThreadObjCmd: thread create } {thread} {
+ set serverthread [thread::create -preserved]
+ set numthreads [llength [thread::names]]
+ thread::release $serverthread
set numthreads
} {2}
-test thread-1.5 {Tcl_ThreadObjCmd: thread create one shot} {testthread} {
- threadReap
- testthread create {set x 5}
+test thread-1.5 {Tcl_ThreadObjCmd: thread create one shot} {thread} {
+ thread::create {set x 5}
foreach try {0 1 2 4 5 6} {
# Try various ways to yield
update
after 10
- set l [llength [testthread names]]
+ set l [llength [thread::names]]
if {$l == 1} {
break
}
}
- threadReap
set l
} {1}
-test thread-1.6 {Tcl_ThreadObjCmd: thread exit} {testthread} {
+test thread-1.6 {Tcl_ThreadObjCmd: thread exit} {thread} {
threadReap
- testthread create {testthread exit}
+ thread::create {{*}{}}
update
after 10
- set result [llength [testthread names]]
- threadReap
- set result
+ llength [thread::names]
} {1}
test thread-1.7 {Tcl_ThreadObjCmd: thread id args} {testthread} {
set x [catch {testthread id x} msg]
@@ -98,11 +93,10 @@ test thread-1.12 {Tcl_ThreadObjCmd: send nonint} {testthread} {
set x [catch {testthread send abc command} msg]
list $x $msg
} {1 {expected integer but got "abc"}}
-test thread-1.13 {Tcl_ThreadObjCmd: send args} {testthread} {
- threadReap
- set serverthread [testthread create]
- set five [testthread send $serverthread {set x 5}]
- threadReap
+test thread-1.13 {Tcl_ThreadObjCmd: send args} {thread} {
+ set serverthread [thread::create -preserved]
+ set five [thread::send $serverthread {set x 5}]
+ thread::release $serverthread
set five
} 5
test thread-1.14 {Tcl_ThreadObjCmd: send bad id} {testthread} {
@@ -110,11 +104,10 @@ test thread-1.14 {Tcl_ThreadObjCmd: send bad id} {testthread} {
set x [catch {testthread send $tid {set x 5}} msg]
list $x $msg
} {1 {invalid thread id}}
-test thread-1.15 {Tcl_ThreadObjCmd: wait} {testthread} {
- threadReap
- set serverthread [testthread create {set z 5 ; testthread wait}]
- set five [testthread send $serverthread {set z}]
- threadReap
+test thread-1.15 {Tcl_ThreadObjCmd: wait} {thread} {
+ set serverthread [thread::create -preserved {set z 5 ; thread::wait}]
+ set five [thread::send $serverthread {set z}]
+ thread::release $serverthread
set five
} 5
test thread-1.16 {Tcl_ThreadObjCmd: errorproc args} {testthread} {
@@ -131,130 +124,115 @@ test thread-1.17 {Tcl_ThreadObjCmd: errorproc change} {testthread} {
# NewThread, safe and regular
# ThreadErrorProc, except for printing to standard error
-test thread-2.1 {ListUpdateInner and ListRemove} {testthread} {
- threadReap
+test thread-2.1 {ListUpdateInner and ListRemove} {thread} {
catch {unset tid}
foreach t {0 1 2} {
upvar #0 t$t tid
- set tid [testthread create]
+ set tid [thread::create -preserved]
}
- threadReap
+ foreach t {0 1 2} {
+ upvar #0 t$t tid
+ thread::release $tid
+ }
+ llength [thread::names]
} 1
-test thread-3.1 {TclThreadList} {testthread} {
- threadReap
+test thread-3.1 {TclThreadList} {thread} {
catch {unset tid}
- set len [llength [testthread names]]
+ set len [llength [thread::names]]
set l1 {}
foreach t {0 1 2} {
- lappend l1 [testthread create]
+ lappend l1 [thread::create -preserved]
+ }
+ set l2 [thread::names]
+ set c [string compare [lsort [concat [thread::id] $l1]] [lsort $l2]]
+ foreach t $l1 {
+ thread::release $t
}
- set l2 [testthread names]
- list $l1 $l2
- set c [string compare \
- [lsort -integer [concat $::tcltest::mainThread $l1]] \
- [lsort -integer $l2]]
- threadReap
list $len $c
} {1 0}
-test thread-4.1 {TclThreadSend to self} {testthread} {
+test thread-4.1 {TclThreadSend to self} {thread} {
catch {unset x}
- testthread send [testthread id] {
+ thread::send [thread::id] {
set x 4
}
set x
} {4}
-test thread-4.2 {TclThreadSend -async} {testthread} {
- threadReap
- set len [llength [testthread names]]
- set serverthread [testthread create]
- testthread send -async $serverthread {
- after 1000
- testthread exit
+test thread-4.2 {TclThreadSend -async} {thread} {
+ set len [llength [thread::names]]
+ set serverthread [thread::create -preserved]
+ thread::send -async $serverthread {
+ after 1 {thread::release}
}
- set two [llength [testthread names]]
- after 1500 {set done 1}
+ set two [llength [thread::names]]
+ after 100 {set done 1}
vwait done
- threadReap
- list $len [llength [testthread names]] $two
+ list $len [llength [thread::names]] $two
} {1 1 2}
-test thread-4.3 {TclThreadSend preserve errorInfo} {testthread} {
- threadReap
- set len [llength [testthread names]]
- set serverthread [testthread create]
- set x [catch {testthread send $serverthread {set undef}} msg]
+test thread-4.3 {TclThreadSend preserve errorInfo} {thread} {
+ set len [llength [thread::names]]
+ set serverthread [thread::create -preserved]
+ set x [catch {thread::send $serverthread {set undef}} msg]
set savedErrorInfo $::errorInfo
- threadReap
+ thread::release $serverthread
list $len $x $msg $savedErrorInfo
} {1 1 {can't read "undef": no such variable} {can't read "undef": no such variable
while executing
"set undef"
invoked from within
-"testthread send $serverthread {set undef}"}}
-test thread-4.4 {TclThreadSend preserve code} {testthread} {
- threadReap
- set len [llength [testthread names]]
- set serverthread [testthread create]
+"thread::send $serverthread {set undef}"}}
+test thread-4.4 {TclThreadSend preserve code} {thread} {
+ set len [llength [thread::names]]
+ set serverthread [thread::create -preserved]
set ::errorInfo {}
- set x [catch {testthread send $serverthread {set ::errorInfo {}; break}} msg]
+ set x [catch {thread::send $serverthread {set ::errorInfo {}; break}} msg]
set savedErrorInfo $::errorInfo
- threadReap
+ thread::release $serverthread
list $len $x $msg $savedErrorInfo
} {1 3 {} {}}
-test thread-4.5 {TclThreadSend preserve errorCode} {testthread} {
- threadReap
- set ::tcltest::mainThread [testthread names]
- set serverthread [testthread create]
- set x [catch {testthread send $serverthread {error ERR INFO CODE}} msg]
+test thread-4.5 {TclThreadSend preserve errorCode} {thread} {
+ set serverthread [thread::create]
+ set x [catch {thread::send $serverthread {error ERR INFO CODE}} msg]
set savedErrorCode $::errorCode
- threadReap
+ thread::release $serverthread
list $x $msg $savedErrorCode
} {1 ERR CODE}
-test thread-5.0 {Joining threads} {testthread} {
- threadReap
- set serverthread [testthread create -joinable]
- testthread send -async $serverthread {after 1000 ; testthread exit}
- set res [testthread join $serverthread]
- threadReap
- set res
+test thread-5.0 {Joining threads} {thread} {
+ set serverthread [thread::create -joinable -preserved]
+ thread::send -async $serverthread {after 1000 ; thread::release}
+ thread::join $serverthread
} {0}
-test thread-5.1 {Joining threads after the fact} {testthread} {
- threadReap
- set serverthread [testthread create -joinable]
- testthread send -async $serverthread {testthread exit}
+test thread-5.1 {Joining threads after the fact} {thread} {
+ set serverthread [thread::create -joinable -preserved]
+ thread::send -async $serverthread {thread::release}
after 2000
- set res [testthread join $serverthread]
- threadReap
- set res
+ thread::join $serverthread
} {0}
-test thread-5.2 {Try to join a detached thread} {testthread} {
- threadReap
- set serverthread [testthread create]
- testthread send -async $serverthread {after 1000 ; testthread exit}
- catch {set res [testthread join $serverthread]} msg
- threadReap
+test thread-5.2 {Try to join a detached thread} {thread} {
+ set serverthread [thread::create -preserved]
+ thread::send -async $serverthread {after 1000 ; thread::release}
+ catch {set res [thread::join $serverthread]} msg
+ while {[llength [thread::names]] > 1} {
+ after 20
+ }
lrange $msg 0 2
} {cannot join thread}
-test thread-6.1 {freeing very large object trees in a thread} testthread {
+test thread-6.1 {freeing very large object trees in a thread} thread {
# conceptual duplicate of obj-32.1
- threadReap
- set serverthread [testthread create -joinable]
- testthread send -async $serverthread {
+ set serverthread [thread::create -preserved]
+ thread::send -async $serverthread {
set x {}
for {set i 0} {$i<100000} {incr i} {
set x [list $x {}]
}
unset x
- testthread exit
}
- catch {set res [testthread join $serverthread]} msg
- threadReap
- set res
-} {0}
+ thread::release -wait $serverthread
+} 0
# TIP #285: Script cancellation support
test thread-7.1 {cancel: args} {testthread} {
diff --git a/tests/unixNotfy.test b/tests/unixNotfy.test
index 8af8a21..9684bfe 100644
--- a/tests/unixNotfy.test
+++ b/tests/unixNotfy.test
@@ -20,7 +20,8 @@ if {[lsearch [namespace children] ::tcltest] == -1} {
}
# When run in a Tk shell, these tests hang.
-testConstraint noTk [expr {![info exists tk_version]}]
+testConstraint noTk [expr {0 != [catch {package present Tk}]}]
+testConstraint thread [expr {0 == [catch {package require Thread 2.6}]}]
testConstraint testthread [expr {[info commands testthread] != {}}]
# Darwin always uses a threaded notifier
testConstraint unthreaded [expr {
@@ -61,16 +62,16 @@ test unixNotfy-1.2 {Tcl_DeleteFileHandler} -constraints {noTk unix unthreaded} -
}
test unixNotfy-2.1 {Tcl_DeleteFileHandler} \
- -constraints {noTk unix testthread} \
+ -constraints {noTk unix thread} \
-body {
update
set f [open [makeFile "" foo] w]
fileevent $f writable {set x 1}
vwait x
close $f
- testthread create "testthread send [testthread id] {set x ok}"
+ set t [thread::create -preserved "thread::send [thread::id] {set x ok}"]
vwait x
- threadReap
+ thread::release $t
set x
} \
-result {ok} \
@@ -79,7 +80,7 @@ test unixNotfy-2.1 {Tcl_DeleteFileHandler} \
catch { removeFile foo }
}
test unixNotfy-2.2 {Tcl_DeleteFileHandler} \
- -constraints {noTk unix testthread} \
+ -constraints {noTk unix thread} \
-body {
update
set f1 [open [makeFile "" foo] w]
@@ -90,9 +91,9 @@ test unixNotfy-2.2 {Tcl_DeleteFileHandler} \
close $f1
vwait y
close $f2
- testthread create "testthread send [testthread id] {set x ok}"
+ set t [thread::create -preserved "thread::send [thread::id] {set x ok}"]
vwait x
- threadReap
+ thread::release $t
set x
} \
-result {ok} \
diff --git a/unix/tclUnixSock.c b/unix/tclUnixSock.c
index f302b70..7b5c9e0 100644
--- a/unix/tclUnixSock.c
+++ b/unix/tclUnixSock.c
@@ -68,6 +68,7 @@ struct TcpState {
int filehandlers; /* Caches FileHandlers that get set up while
* an async socket is not yet connected */
int status; /* Cache status of async socket */
+ int cachedBlocking; /* Cache blocking mode of async socket */
};
/*
@@ -348,6 +349,10 @@ TcpBlockModeProc(
} else {
SET_BITS(statePtr->flags, TCP_ASYNC_SOCKET);
}
+ if (statePtr->flags & TCP_ASYNC_CONNECT) {
+ statePtr->cachedBlocking = mode;
+ return 0;
+ }
if (TclUnixSetBlockingMode(statePtr->fds.fd, mode) < 0) {
return errno;
}
@@ -816,6 +821,15 @@ TcpWatchProc(
* TCL_EXCEPTION. */
{
TcpState *statePtr = (TcpState *) instanceData;
+
+ if (statePtr->acceptProc != NULL) {
+ /*
+ * Make sure we don't mess with server sockets since they will never
+ * be readable or writable at the Tcl level. This keeps Tcl scripts
+ * from interfering with the -accept behavior (bug #3394732).
+ */
+ return;
+ }
if (statePtr->flags & TCP_ASYNC_CONNECT) {
/* Async sockets use a FileHandler internally while connecting, so we
@@ -1029,7 +1043,7 @@ out:
*/
CLEAR_BITS(state->flags, TCP_ASYNC_CONNECT);
TcpWatchProc(state, state->filehandlers);
- TclUnixSetBlockingMode(state->fds.fd, TCL_MODE_BLOCKING);
+ TclUnixSetBlockingMode(state->fds.fd, state->cachedBlocking);
/*
* We need to forward the writable event that brought us here, bcasue
@@ -1113,6 +1127,7 @@ Tcl_OpenTcpClient(
state = ckalloc(sizeof(TcpState));
memset(state, 0, sizeof(TcpState));
state->flags = async ? TCP_ASYNC_CONNECT : 0;
+ state->cachedBlocking = TCL_MODE_BLOCKING;
state->addrlist = addrlist;
state->myaddrlist = myaddrlist;
state->fds.fd = -1;
diff --git a/win/tclWinPort.h b/win/tclWinPort.h
index 66888b9..9b19b23 100644
--- a/win/tclWinPort.h
+++ b/win/tclWinPort.h
@@ -250,11 +250,11 @@
#ifndef EOTHER
# define EOTHER 131 /* Other error */
#endif
-#ifndef EOVERFLOW
-# define EOVERFLOW 132 /* File too big */
-#endif
+/* workaround for mingw-w64 bug 3407992 */
+#undef EOVERFLOW
+#define EOVERFLOW 132 /* File too big */
#ifndef EOWNERDEAD
-# define EOWNERDEAD 133 /* File too big */
+# define EOWNERDEAD 133 /* Owner dead */
#endif
#ifndef EPROTO
# define EPROTO 134 /* Protocol error */