diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2011-09-16 08:12:48 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2011-09-16 08:12:48 (GMT) |
commit | 679c72e5a2c14ab53b227e058c4ef06edde6b7a4 (patch) | |
tree | b28a3a30c684e4377f39e18d3b4689891cab876b | |
parent | fe0e5c84250f9e45fcbf320d121a961c767b3b5a (diff) | |
parent | ef09f86d39a751b46143aa33f2ee808b31a6a984 (diff) | |
download | tcl-679c72e5a2c14ab53b227e058c4ef06edde6b7a4.zip tcl-679c72e5a2c14ab53b227e058c4ef06edde6b7a4.tar.gz tcl-679c72e5a2c14ab53b227e058c4ef06edde6b7a4.tar.bz2 |
merge trunk to feature branchtip_388_impl
35 files changed, 1256 insertions, 1091 deletions
@@ -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 */ |