summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfvogel <fvogelnew1@free.fr>2016-03-21 21:32:29 (GMT)
committerfvogel <fvogelnew1@free.fr>2016-03-21 21:32:29 (GMT)
commit3b21ae36fc18189a6cc850c1db2dc0e93e7129b6 (patch)
treecbcb9fac8b6662a217fd223f5504c2c2315ed447
parentaddefaba01a0a32c7659cd2ae09bd805957cc800 (diff)
parent349c1fd2676793625cc0037a11d5989b0a591397 (diff)
downloadtcl-bug_f1253530cd.zip
tcl-bug_f1253530cd.tar.gz
tcl-bug_f1253530cd.tar.bz2
Merged trunkbug_f1253530cd
-rw-r--r--generic/tcl.h18
-rw-r--r--generic/tclCompCmdsGR.c4
-rw-r--r--generic/tclCompile.c21
-rw-r--r--generic/tclEnsemble.c43
-rw-r--r--generic/tclExecute.c35
-rw-r--r--generic/tclHash.c37
-rw-r--r--generic/tclIOCmd.c45
-rw-r--r--library/tzdata/America/Port-au-Prince168
-rw-r--r--library/tzdata/Asia/Barnaul71
-rw-r--r--library/tzdata/Asia/Gaza168
-rw-r--r--library/tzdata/Asia/Hebron168
-rw-r--r--library/tzdata/Asia/Sakhalin1
-rw-r--r--library/tzdata/Europe/Astrakhan70
-rw-r--r--library/tzdata/Europe/Chisinau6
-rw-r--r--library/tzdata/Europe/Samara2
-rw-r--r--library/tzdata/Europe/Ulyanovsk73
-rw-r--r--tests/compile.test11
-rw-r--r--tests/stringComp.test10
-rw-r--r--unix/tclUnixNotfy.c2
-rw-r--r--unix/tclUnixThrd.c17
-rw-r--r--win/tclWinThrd.c31
21 files changed, 523 insertions, 478 deletions
diff --git a/generic/tcl.h b/generic/tcl.h
index 58ba7e5..3cd90a9 100644
--- a/generic/tcl.h
+++ b/generic/tcl.h
@@ -1165,18 +1165,6 @@ typedef Tcl_HashEntry * (Tcl_AllocHashEntryProc) (Tcl_HashTable *tablePtr,
typedef void (Tcl_FreeHashEntryProc) (Tcl_HashEntry *hPtr);
/*
- * This flag controls whether the hash table stores the hash of a key, or
- * recalculates it. There should be no reason for turning this flag off as it
- * is completely binary and source compatible unless you directly access the
- * bucketPtr member of the Tcl_HashTableEntry structure. This member has been
- * removed and the space used to store the hash value.
- */
-
-#ifndef TCL_HASH_KEY_STORE_HASH
-# define TCL_HASH_KEY_STORE_HASH 1
-#endif
-
-/*
* Structure definition for an entry in a hash table. No-one outside Tcl
* should access any of these fields directly; use the macros defined below.
*/
@@ -1185,15 +1173,9 @@ struct Tcl_HashEntry {
Tcl_HashEntry *nextPtr; /* Pointer to next entry in this hash bucket,
* or NULL for end of chain. */
Tcl_HashTable *tablePtr; /* Pointer to table containing entry. */
-#if TCL_HASH_KEY_STORE_HASH
void *hash; /* Hash value, stored as pointer to ensure
* that the offsets of the fields in this
* structure are not changed. */
-#else
- Tcl_HashEntry **bucketPtr; /* Pointer to bucket that points to first
- * entry in this entry's chain: used for
- * deleting the entry. */
-#endif
ClientData clientData; /* Application stores something here with
* Tcl_SetHashValue. */
union { /* Key has one of these forms: */
diff --git a/generic/tclCompCmdsGR.c b/generic/tclCompCmdsGR.c
index e674fb0..87ed745 100644
--- a/generic/tclCompCmdsGR.c
+++ b/generic/tclCompCmdsGR.c
@@ -2966,10 +2966,12 @@ IndexTailVarIfKnown(
} else {
full = 0;
lastTokenPtr = varTokenPtr + n;
- if (!TclWordKnownAtCompileTime(lastTokenPtr, tailPtr)) {
+
+ if (lastTokenPtr->type != TCL_TOKEN_TEXT) {
Tcl_DecrRefCount(tailPtr);
return -1;
}
+ Tcl_SetStringObj(tailPtr, lastTokenPtr->start, lastTokenPtr->size);
}
tailName = TclGetStringFromObj(tailPtr, &len);
diff --git a/generic/tclCompile.c b/generic/tclCompile.c
index 4c259ab..c0b5dcc 100644
--- a/generic/tclCompile.c
+++ b/generic/tclCompile.c
@@ -3360,26 +3360,25 @@ TclGetInnermostExceptionRange(
int returnCode,
ExceptionAux **auxPtrPtr)
{
- int exnIdx = -1, i;
+ int i = envPtr->exceptArrayNext;
+ ExceptionRange *rangePtr = envPtr->exceptArrayPtr + i;
- for (i=0 ; i<envPtr->exceptArrayNext ; i++) {
- ExceptionRange *rangePtr = &envPtr->exceptArrayPtr[i];
+ while (i > 0) {
+ rangePtr--; i--;
if (CurrentOffset(envPtr) >= rangePtr->codeOffset &&
(rangePtr->numCodeBytes == -1 || CurrentOffset(envPtr) <
rangePtr->codeOffset+rangePtr->numCodeBytes) &&
(returnCode != TCL_CONTINUE ||
envPtr->exceptAuxArrayPtr[i].supportsContinue)) {
- exnIdx = i;
+
+ if (auxPtrPtr) {
+ *auxPtrPtr = envPtr->exceptAuxArrayPtr + i;
+ }
+ return rangePtr;
}
}
- if (exnIdx == -1) {
- return NULL;
- }
- if (auxPtrPtr) {
- *auxPtrPtr = &envPtr->exceptAuxArrayPtr[exnIdx];
- }
- return &envPtr->exceptArrayPtr[exnIdx];
+ return NULL;
}
/*
diff --git a/generic/tclEnsemble.c b/generic/tclEnsemble.c
index 8f7d1a2..986a553 100644
--- a/generic/tclEnsemble.c
+++ b/generic/tclEnsemble.c
@@ -3082,6 +3082,11 @@ TclAttemptCompileProc(
Tcl_Token *saveTokenPtr = parsePtr->tokenPtr;
int savedStackDepth = envPtr->currStackDepth;
unsigned savedCodeNext = envPtr->codeNext - envPtr->codeStart;
+ int savedAuxDataArrayNext = envPtr->auxDataArrayNext;
+ int savedExceptArrayNext = envPtr->exceptArrayNext;
+#ifdef TCL_COMPILE_DEBUG
+ int savedExceptDepth = envPtr->exceptDepth;
+#endif
DefineLineInformation;
if (cmdPtr->compileProc == NULL) {
@@ -3130,7 +3135,45 @@ TclAttemptCompileProc(
* we avoid compiling subcommands that recursively call TclCompileScript().
*/
+#ifdef TCL_COMPILE_DEBUG
+ if (envPtr->exceptDepth != savedExceptDepth) {
+ Tcl_Panic("ExceptionRange Starts and Ends do not balance");
+ }
+#endif
+
if (result != TCL_OK) {
+ ExceptionAux *auxPtr = envPtr->exceptAuxArrayPtr;
+
+ for (i = 0; i < savedExceptArrayNext; i++) {
+ while (auxPtr->numBreakTargets > 0
+ && auxPtr->breakTargets[auxPtr->numBreakTargets - 1]
+ >= savedCodeNext) {
+ auxPtr->numBreakTargets--;
+ }
+ while (auxPtr->numContinueTargets > 0
+ && auxPtr->continueTargets[auxPtr->numContinueTargets - 1]
+ >= savedCodeNext) {
+ auxPtr->numContinueTargets--;
+ }
+ auxPtr++;
+ }
+ envPtr->exceptArrayNext = savedExceptArrayNext;
+
+ if (savedAuxDataArrayNext != envPtr->auxDataArrayNext) {
+ AuxData *auxDataPtr = envPtr->auxDataArrayPtr;
+ AuxData *auxDataEnd = auxDataPtr;
+
+ auxDataPtr += savedAuxDataArrayNext;
+ auxDataEnd += envPtr->auxDataArrayNext;
+
+ while (auxDataPtr < auxDataEnd) {
+ if (auxDataPtr->type->freeProc != NULL) {
+ auxDataPtr->type->freeProc(auxDataPtr->clientData);
+ }
+ auxDataPtr++;
+ }
+ envPtr->auxDataArrayNext = savedAuxDataArrayNext;
+ }
envPtr->currStackDepth = savedStackDepth;
envPtr->codeNext = envPtr->codeStart + savedCodeNext;
#ifdef TCL_COMPILE_DEBUG
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index dacc9e2..c43cc40 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -5737,6 +5737,17 @@ TEBCresume(
if (length3 - 1 == toIdx - fromIdx) {
unsigned char *bytes1, *bytes2;
+ /*
+ * Flush the info in the string internal rep that refers to the
+ * about-to-be-invalidated UTF-8 rep. This sets the 'allocated'
+ * field of the String structure to 0 to indicate that a new
+ * buffer needs to be allocated. This assumes that the value is
+ * already of tclStringTypePtr type, which should be true provided
+ * we call it after Tcl_GetUnicodeFromObj.
+ */
+#define MarkStringInternalRepForFlush(objPtr) \
+ (((int *) ((objPtr)->internalRep.twoPtrValue.ptr1))[1] = 0)
+
if (Tcl_IsShared(valuePtr)) {
objResultPtr = Tcl_DuplicateObj(valuePtr);
if (TclIsPureByteArray(objResultPtr)
@@ -5749,17 +5760,7 @@ TEBCresume(
ustring2 = Tcl_GetUnicodeFromObj(value3Ptr, NULL);
memcpy(ustring1 + fromIdx, ustring2,
length3 * sizeof(Tcl_UniChar));
-
- /*
- * Magic! Flush the info in the string internal rep that
- * refers to the about-to-be-invalidated UTF-8 rep. This
- * sets the 'allocated' field of the String structure to 0
- * to indicate that a new buffer needs to be allocated.
- * This is safe; we know we've got a tclStringTypePtr set
- * at this point (post Tcl_GetUnicodeFromObj).
- */
-
- ((int *) objResultPtr->internalRep.twoPtrValue.ptr1)[1] = 0;
+ MarkStringInternalRepForFlush(objResultPtr);
}
Tcl_InvalidateStringRep(objResultPtr);
TclDecrRefCount(value3Ptr);
@@ -5776,17 +5777,7 @@ TEBCresume(
ustring2 = Tcl_GetUnicodeFromObj(value3Ptr, NULL);
memcpy(ustring1 + fromIdx, ustring2,
length3 * sizeof(Tcl_UniChar));
-
- /*
- * Magic! Flush the info in the string internal rep that
- * refers to the about-to-be-invalidated UTF-8 rep. This
- * sets the 'allocated' field of the String structure to 0
- * to indicate that a new buffer needs to be allocated.
- * This is safe; we know we've got a tclStringTypePtr set
- * at this point (post Tcl_GetUnicodeFromObj).
- */
-
- ((int *) objResultPtr->internalRep.twoPtrValue.ptr1)[1] = 0;
+ MarkStringInternalRepForFlush(valuePtr);
}
Tcl_InvalidateStringRep(valuePtr);
TclDecrRefCount(value3Ptr);
diff --git a/generic/tclHash.c b/generic/tclHash.c
index 1991aea..3ea9dd9 100644
--- a/generic/tclHash.c
+++ b/generic/tclHash.c
@@ -321,11 +321,9 @@ CreateHashEntry(
for (hPtr = tablePtr->buckets[index]; hPtr != NULL;
hPtr = hPtr->nextPtr) {
-#if TCL_HASH_KEY_STORE_HASH
if (hash != PTR2UINT(hPtr->hash)) {
continue;
}
-#endif
if (((void *) key == hPtr) || compareKeysProc((void *) key, hPtr)) {
if (newPtr) {
*newPtr = 0;
@@ -336,11 +334,9 @@ CreateHashEntry(
} else {
for (hPtr = tablePtr->buckets[index]; hPtr != NULL;
hPtr = hPtr->nextPtr) {
-#if TCL_HASH_KEY_STORE_HASH
if (hash != PTR2UINT(hPtr->hash)) {
continue;
}
-#endif
if (key == hPtr->key.oneWordValue) {
if (newPtr) {
*newPtr = 0;
@@ -368,15 +364,9 @@ CreateHashEntry(
}
hPtr->tablePtr = tablePtr;
-#if TCL_HASH_KEY_STORE_HASH
hPtr->hash = UINT2PTR(hash);
hPtr->nextPtr = tablePtr->buckets[index];
tablePtr->buckets[index] = hPtr;
-#else
- hPtr->bucketPtr = &tablePtr->buckets[index];
- hPtr->nextPtr = *hPtr->bucketPtr;
- *hPtr->bucketPtr = hPtr;
-#endif
tablePtr->numEntries++;
/*
@@ -416,9 +406,7 @@ Tcl_DeleteHashEntry(
const Tcl_HashKeyType *typePtr;
Tcl_HashTable *tablePtr;
Tcl_HashEntry **bucketPtr;
-#if TCL_HASH_KEY_STORE_HASH
int index;
-#endif
tablePtr = entryPtr->tablePtr;
@@ -433,7 +421,6 @@ Tcl_DeleteHashEntry(
typePtr = &tclArrayHashKeyType;
}
-#if TCL_HASH_KEY_STORE_HASH
if (typePtr->hashKeyProc == NULL
|| typePtr->flags & TCL_HASH_KEY_RANDOMIZE_HASH) {
index = RANDOM_INDEX(tablePtr, PTR2INT(entryPtr->hash));
@@ -442,9 +429,6 @@ Tcl_DeleteHashEntry(
}
bucketPtr = &tablePtr->buckets[index];
-#else
- bucketPtr = entryPtr->bucketPtr;
-#endif
if (*bucketPtr == entryPtr) {
*bucketPtr = entryPtr->nextPtr;
@@ -1062,7 +1046,6 @@ RebuildTable(
for (oldChainPtr = oldBuckets; oldSize > 0; oldSize--, oldChainPtr++) {
for (hPtr = *oldChainPtr; hPtr != NULL; hPtr = *oldChainPtr) {
*oldChainPtr = hPtr->nextPtr;
-#if TCL_HASH_KEY_STORE_HASH
if (typePtr->hashKeyProc == NULL
|| typePtr->flags & TCL_HASH_KEY_RANDOMIZE_HASH) {
index = RANDOM_INDEX(tablePtr, PTR2INT(hPtr->hash));
@@ -1071,26 +1054,6 @@ RebuildTable(
}
hPtr->nextPtr = tablePtr->buckets[index];
tablePtr->buckets[index] = hPtr;
-#else
- void *key = Tcl_GetHashKey(tablePtr, hPtr);
-
- if (typePtr->hashKeyProc) {
- unsigned int hash;
-
- hash = typePtr->hashKeyProc(tablePtr, key);
- if (typePtr->flags & TCL_HASH_KEY_RANDOMIZE_HASH) {
- index = RANDOM_INDEX(tablePtr, hash);
- } else {
- index = hash & tablePtr->mask;
- }
- } else {
- index = RANDOM_INDEX(tablePtr, key);
- }
-
- hPtr->bucketPtr = &tablePtr->buckets[index];
- hPtr->nextPtr = *hPtr->bucketPtr;
- *hPtr->bucketPtr = hPtr;
-#endif
}
}
diff --git a/generic/tclIOCmd.c b/generic/tclIOCmd.c
index 834f225..de65da5 100644
--- a/generic/tclIOCmd.c
+++ b/generic/tclIOCmd.c
@@ -16,7 +16,7 @@
*/
typedef struct AcceptCallback {
- char *script; /* Script to invoke. */
+ Tcl_Obj *script; /* Script to invoke. */
Tcl_Interp *interp; /* Interpreter in which to run it. */
} AcceptCallback;
@@ -37,8 +37,7 @@ static Tcl_ThreadDataKey dataKey;
*/
static void FinalizeIOCmdTSD(ClientData clientData);
-static void AcceptCallbackProc(ClientData callbackData,
- Tcl_Channel chan, char *address, int port);
+static Tcl_TcpAcceptProc AcceptCallbackProc;
static int ChanPendingObjCmd(ClientData unused,
Tcl_Interp *interp, int objc,
Tcl_Obj *const objv[]);
@@ -1373,15 +1372,22 @@ AcceptCallbackProc(
*/
if (acceptCallbackPtr->interp != NULL) {
- char portBuf[TCL_INTEGER_SPACE];
- char *script = acceptCallbackPtr->script;
Tcl_Interp *interp = acceptCallbackPtr->interp;
- int result;
+ Tcl_Obj *script, *objv[2];
+ int result = TCL_OK;
- Tcl_Preserve(script);
- Tcl_Preserve(interp);
+ objv[0] = acceptCallbackPtr->script;
+ objv[1] = Tcl_NewListObj(3, NULL);
+ Tcl_ListObjAppendElement(NULL, objv[1], Tcl_NewStringObj(
+ Tcl_GetChannelName(chan), -1));
+ Tcl_ListObjAppendElement(NULL, objv[1], Tcl_NewStringObj(address, -1));
+ Tcl_ListObjAppendElement(NULL, objv[1], Tcl_NewIntObj(port));
+
+ script = Tcl_ConcatObj(2, objv);
+ Tcl_IncrRefCount(script);
+ Tcl_DecrRefCount(objv[1]);
- TclFormatInt(portBuf, port);
+ Tcl_Preserve(interp);
Tcl_RegisterChannel(interp, chan);
/*
@@ -1391,8 +1397,9 @@ AcceptCallbackProc(
Tcl_RegisterChannel(NULL, chan);
- result = Tcl_VarEval(interp, script, " ", Tcl_GetChannelName(chan),
- " ", address, " ", portBuf, NULL);
+ result = Tcl_EvalObjEx(interp, script, TCL_EVAL_DIRECT|TCL_EVAL_GLOBAL);
+ Tcl_DecrRefCount(script);
+
if (result != TCL_OK) {
Tcl_BackgroundException(interp, result);
Tcl_UnregisterChannel(interp, chan);
@@ -1406,7 +1413,6 @@ AcceptCallbackProc(
Tcl_UnregisterChannel(NULL, chan);
Tcl_Release(interp);
- Tcl_Release(script);
} else {
/*
* The interpreter has been deleted, so there is no useful way to use
@@ -1450,7 +1456,7 @@ TcpServerCloseProc(
UnregisterTcpServerInterpCleanupProc(acceptCallbackPtr->interp,
acceptCallbackPtr);
}
- Tcl_EventuallyFree(acceptCallbackPtr->script, TCL_DYNAMIC);
+ Tcl_DecrRefCount(acceptCallbackPtr->script);
ckfree(acceptCallbackPtr);
}
@@ -1485,7 +1491,8 @@ Tcl_SocketObjCmd(
SKT_ASYNC, SKT_MYADDR, SKT_MYPORT, SKT_SERVER
};
int optionIndex, a, server = 0, port, myport = 0, async = 0;
- const char *host, *script = NULL, *myaddr = NULL;
+ const char *host, *myaddr = NULL;
+ Tcl_Obj *script = NULL;
Tcl_Channel chan;
if (TclpHasSockets(interp) != TCL_OK) {
@@ -1548,7 +1555,7 @@ Tcl_SocketObjCmd(
"no argument given for -server option", -1));
return TCL_ERROR;
}
- script = TclGetString(objv[a]);
+ script = objv[a];
break;
default:
Tcl_Panic("Tcl_SocketObjCmd: bad option index to SocketOptions");
@@ -1589,16 +1596,14 @@ Tcl_SocketObjCmd(
if (server) {
AcceptCallback *acceptCallbackPtr =
ckalloc(sizeof(AcceptCallback));
- unsigned len = strlen(script) + 1;
- char *copyScript = ckalloc(len);
- memcpy(copyScript, script, len);
- acceptCallbackPtr->script = copyScript;
+ Tcl_IncrRefCount(script);
+ acceptCallbackPtr->script = script;
acceptCallbackPtr->interp = interp;
chan = Tcl_OpenTcpServer(interp, port, host, AcceptCallbackProc,
acceptCallbackPtr);
if (chan == NULL) {
- ckfree(copyScript);
+ Tcl_DecrRefCount(script);
ckfree(acceptCallbackPtr);
return TCL_ERROR;
}
diff --git a/library/tzdata/America/Port-au-Prince b/library/tzdata/America/Port-au-Prince
index f1d7fc4..b8b60d6 100644
--- a/library/tzdata/America/Port-au-Prince
+++ b/library/tzdata/America/Port-au-Prince
@@ -46,172 +46,4 @@ set TZData(:America/Port-au-Prince) {
{1414908000 -18000 0 EST}
{1425798000 -14400 1 EDT}
{1446357600 -18000 0 EST}
- {1457852400 -14400 1 EDT}
- {1478412000 -18000 0 EST}
- {1489302000 -14400 1 EDT}
- {1509861600 -18000 0 EST}
- {1520751600 -14400 1 EDT}
- {1541311200 -18000 0 EST}
- {1552201200 -14400 1 EDT}
- {1572760800 -18000 0 EST}
- {1583650800 -14400 1 EDT}
- {1604210400 -18000 0 EST}
- {1615705200 -14400 1 EDT}
- {1636264800 -18000 0 EST}
- {1647154800 -14400 1 EDT}
- {1667714400 -18000 0 EST}
- {1678604400 -14400 1 EDT}
- {1699164000 -18000 0 EST}
- {1710054000 -14400 1 EDT}
- {1730613600 -18000 0 EST}
- {1741503600 -14400 1 EDT}
- {1762063200 -18000 0 EST}
- {1772953200 -14400 1 EDT}
- {1793512800 -18000 0 EST}
- {1805007600 -14400 1 EDT}
- {1825567200 -18000 0 EST}
- {1836457200 -14400 1 EDT}
- {1857016800 -18000 0 EST}
- {1867906800 -14400 1 EDT}
- {1888466400 -18000 0 EST}
- {1899356400 -14400 1 EDT}
- {1919916000 -18000 0 EST}
- {1930806000 -14400 1 EDT}
- {1951365600 -18000 0 EST}
- {1962860400 -14400 1 EDT}
- {1983420000 -18000 0 EST}
- {1994310000 -14400 1 EDT}
- {2014869600 -18000 0 EST}
- {2025759600 -14400 1 EDT}
- {2046319200 -18000 0 EST}
- {2057209200 -14400 1 EDT}
- {2077768800 -18000 0 EST}
- {2088658800 -14400 1 EDT}
- {2109218400 -18000 0 EST}
- {2120108400 -14400 1 EDT}
- {2140668000 -18000 0 EST}
- {2152162800 -14400 1 EDT}
- {2172722400 -18000 0 EST}
- {2183612400 -14400 1 EDT}
- {2204172000 -18000 0 EST}
- {2215062000 -14400 1 EDT}
- {2235621600 -18000 0 EST}
- {2246511600 -14400 1 EDT}
- {2267071200 -18000 0 EST}
- {2277961200 -14400 1 EDT}
- {2298520800 -18000 0 EST}
- {2309410800 -14400 1 EDT}
- {2329970400 -18000 0 EST}
- {2341465200 -14400 1 EDT}
- {2362024800 -18000 0 EST}
- {2372914800 -14400 1 EDT}
- {2393474400 -18000 0 EST}
- {2404364400 -14400 1 EDT}
- {2424924000 -18000 0 EST}
- {2435814000 -14400 1 EDT}
- {2456373600 -18000 0 EST}
- {2467263600 -14400 1 EDT}
- {2487823200 -18000 0 EST}
- {2499318000 -14400 1 EDT}
- {2519877600 -18000 0 EST}
- {2530767600 -14400 1 EDT}
- {2551327200 -18000 0 EST}
- {2562217200 -14400 1 EDT}
- {2582776800 -18000 0 EST}
- {2593666800 -14400 1 EDT}
- {2614226400 -18000 0 EST}
- {2625116400 -14400 1 EDT}
- {2645676000 -18000 0 EST}
- {2656566000 -14400 1 EDT}
- {2677125600 -18000 0 EST}
- {2688620400 -14400 1 EDT}
- {2709180000 -18000 0 EST}
- {2720070000 -14400 1 EDT}
- {2740629600 -18000 0 EST}
- {2751519600 -14400 1 EDT}
- {2772079200 -18000 0 EST}
- {2782969200 -14400 1 EDT}
- {2803528800 -18000 0 EST}
- {2814418800 -14400 1 EDT}
- {2834978400 -18000 0 EST}
- {2846473200 -14400 1 EDT}
- {2867032800 -18000 0 EST}
- {2877922800 -14400 1 EDT}
- {2898482400 -18000 0 EST}
- {2909372400 -14400 1 EDT}
- {2929932000 -18000 0 EST}
- {2940822000 -14400 1 EDT}
- {2961381600 -18000 0 EST}
- {2972271600 -14400 1 EDT}
- {2992831200 -18000 0 EST}
- {3003721200 -14400 1 EDT}
- {3024280800 -18000 0 EST}
- {3035775600 -14400 1 EDT}
- {3056335200 -18000 0 EST}
- {3067225200 -14400 1 EDT}
- {3087784800 -18000 0 EST}
- {3098674800 -14400 1 EDT}
- {3119234400 -18000 0 EST}
- {3130124400 -14400 1 EDT}
- {3150684000 -18000 0 EST}
- {3161574000 -14400 1 EDT}
- {3182133600 -18000 0 EST}
- {3193023600 -14400 1 EDT}
- {3213583200 -18000 0 EST}
- {3225078000 -14400 1 EDT}
- {3245637600 -18000 0 EST}
- {3256527600 -14400 1 EDT}
- {3277087200 -18000 0 EST}
- {3287977200 -14400 1 EDT}
- {3308536800 -18000 0 EST}
- {3319426800 -14400 1 EDT}
- {3339986400 -18000 0 EST}
- {3350876400 -14400 1 EDT}
- {3371436000 -18000 0 EST}
- {3382930800 -14400 1 EDT}
- {3403490400 -18000 0 EST}
- {3414380400 -14400 1 EDT}
- {3434940000 -18000 0 EST}
- {3445830000 -14400 1 EDT}
- {3466389600 -18000 0 EST}
- {3477279600 -14400 1 EDT}
- {3497839200 -18000 0 EST}
- {3508729200 -14400 1 EDT}
- {3529288800 -18000 0 EST}
- {3540178800 -14400 1 EDT}
- {3560738400 -18000 0 EST}
- {3572233200 -14400 1 EDT}
- {3592792800 -18000 0 EST}
- {3603682800 -14400 1 EDT}
- {3624242400 -18000 0 EST}
- {3635132400 -14400 1 EDT}
- {3655692000 -18000 0 EST}
- {3666582000 -14400 1 EDT}
- {3687141600 -18000 0 EST}
- {3698031600 -14400 1 EDT}
- {3718591200 -18000 0 EST}
- {3730086000 -14400 1 EDT}
- {3750645600 -18000 0 EST}
- {3761535600 -14400 1 EDT}
- {3782095200 -18000 0 EST}
- {3792985200 -14400 1 EDT}
- {3813544800 -18000 0 EST}
- {3824434800 -14400 1 EDT}
- {3844994400 -18000 0 EST}
- {3855884400 -14400 1 EDT}
- {3876444000 -18000 0 EST}
- {3887334000 -14400 1 EDT}
- {3907893600 -18000 0 EST}
- {3919388400 -14400 1 EDT}
- {3939948000 -18000 0 EST}
- {3950838000 -14400 1 EDT}
- {3971397600 -18000 0 EST}
- {3982287600 -14400 1 EDT}
- {4002847200 -18000 0 EST}
- {4013737200 -14400 1 EDT}
- {4034296800 -18000 0 EST}
- {4045186800 -14400 1 EDT}
- {4065746400 -18000 0 EST}
- {4076636400 -14400 1 EDT}
- {4097196000 -18000 0 EST}
}
diff --git a/library/tzdata/Asia/Barnaul b/library/tzdata/Asia/Barnaul
new file mode 100644
index 0000000..8072e34
--- /dev/null
+++ b/library/tzdata/Asia/Barnaul
@@ -0,0 +1,71 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Barnaul) {
+ {-9223372036854775808 20100 0 LMT}
+ {-1579844100 21600 0 +06}
+ {-1247551200 25200 0 +08}
+ {354906000 28800 1 +08}
+ {370713600 25200 0 +07}
+ {386442000 28800 1 +08}
+ {402249600 25200 0 +07}
+ {417978000 28800 1 +08}
+ {433785600 25200 0 +07}
+ {449600400 28800 1 +08}
+ {465332400 25200 0 +07}
+ {481057200 28800 1 +08}
+ {496782000 25200 0 +07}
+ {512506800 28800 1 +08}
+ {528231600 25200 0 +07}
+ {543956400 28800 1 +08}
+ {559681200 25200 0 +07}
+ {575406000 28800 1 +08}
+ {591130800 25200 0 +07}
+ {606855600 28800 1 +08}
+ {622580400 25200 0 +07}
+ {638305200 28800 1 +08}
+ {654634800 25200 0 +07}
+ {670359600 28800 1 +08}
+ {686084400 25200 0 +07}
+ {701798400 28800 1 +08}
+ {717519600 25200 0 +07}
+ {733258800 28800 1 +08}
+ {748983600 25200 0 +07}
+ {764708400 28800 1 +08}
+ {780433200 25200 0 +07}
+ {796158000 28800 1 +08}
+ {801594000 25200 0 +07}
+ {811886400 21600 0 +06}
+ {828216000 25200 1 +07}
+ {846360000 21600 0 +06}
+ {859665600 25200 1 +07}
+ {877809600 21600 0 +06}
+ {891115200 25200 1 +07}
+ {909259200 21600 0 +06}
+ {922564800 25200 1 +07}
+ {941313600 21600 0 +06}
+ {954014400 25200 1 +07}
+ {972763200 21600 0 +06}
+ {985464000 25200 1 +07}
+ {1004212800 21600 0 +06}
+ {1017518400 25200 1 +07}
+ {1035662400 21600 0 +06}
+ {1048968000 25200 1 +07}
+ {1067112000 21600 0 +06}
+ {1080417600 25200 1 +07}
+ {1099166400 21600 0 +06}
+ {1111867200 25200 1 +07}
+ {1130616000 21600 0 +06}
+ {1143316800 25200 1 +07}
+ {1162065600 21600 0 +06}
+ {1174766400 25200 1 +07}
+ {1193515200 21600 0 +06}
+ {1206820800 25200 1 +07}
+ {1224964800 21600 0 +06}
+ {1238270400 25200 1 +07}
+ {1256414400 21600 0 +06}
+ {1269720000 25200 1 +07}
+ {1288468800 21600 0 +06}
+ {1301169600 25200 0 +07}
+ {1414263600 21600 0 +06}
+ {1459022400 25200 0 +07}
+}
diff --git a/library/tzdata/Asia/Gaza b/library/tzdata/Asia/Gaza
index 805b6b7..6adfe6d 100644
--- a/library/tzdata/Asia/Gaza
+++ b/library/tzdata/Asia/Gaza
@@ -107,172 +107,172 @@ set TZData(:Asia/Gaza) {
{1414098000 7200 0 EET}
{1427493600 10800 1 EEST}
{1445547600 7200 0 EET}
- {1458943200 10800 1 EEST}
+ {1458946800 10800 1 EEST}
{1476997200 7200 0 EET}
- {1490997600 10800 1 EEST}
+ {1490396400 10800 1 EEST}
{1509051600 7200 0 EET}
- {1522447200 10800 1 EEST}
+ {1522450800 10800 1 EEST}
{1540501200 7200 0 EET}
- {1553896800 10800 1 EEST}
+ {1553900400 10800 1 EEST}
{1571950800 7200 0 EET}
- {1585346400 10800 1 EEST}
+ {1585350000 10800 1 EEST}
{1603400400 7200 0 EET}
- {1616796000 10800 1 EEST}
+ {1616799600 10800 1 EEST}
{1634850000 7200 0 EET}
- {1648245600 10800 1 EEST}
+ {1648249200 10800 1 EEST}
{1666299600 7200 0 EET}
- {1680300000 10800 1 EEST}
+ {1679698800 10800 1 EEST}
{1698354000 7200 0 EET}
- {1711749600 10800 1 EEST}
+ {1711753200 10800 1 EEST}
{1729803600 7200 0 EET}
- {1743199200 10800 1 EEST}
+ {1743202800 10800 1 EEST}
{1761253200 7200 0 EET}
- {1774648800 10800 1 EEST}
+ {1774652400 10800 1 EEST}
{1792702800 7200 0 EET}
- {1806098400 10800 1 EEST}
+ {1806102000 10800 1 EEST}
{1824152400 7200 0 EET}
- {1838152800 10800 1 EEST}
+ {1837551600 10800 1 EEST}
{1856206800 7200 0 EET}
- {1869602400 10800 1 EEST}
+ {1869606000 10800 1 EEST}
{1887656400 7200 0 EET}
- {1901052000 10800 1 EEST}
+ {1901055600 10800 1 EEST}
{1919106000 7200 0 EET}
- {1932501600 10800 1 EEST}
+ {1932505200 10800 1 EEST}
{1950555600 7200 0 EET}
- {1963951200 10800 1 EEST}
+ {1963954800 10800 1 EEST}
{1982005200 7200 0 EET}
- {1995400800 10800 1 EEST}
+ {1995404400 10800 1 EEST}
{2013454800 7200 0 EET}
- {2027455200 10800 1 EEST}
+ {2026854000 10800 1 EEST}
{2045509200 7200 0 EET}
- {2058904800 10800 1 EEST}
+ {2058908400 10800 1 EEST}
{2076958800 7200 0 EET}
- {2090354400 10800 1 EEST}
+ {2090358000 10800 1 EEST}
{2108408400 7200 0 EET}
- {2121804000 10800 1 EEST}
+ {2121807600 10800 1 EEST}
{2139858000 7200 0 EET}
- {2153253600 10800 1 EEST}
+ {2153257200 10800 1 EEST}
{2171307600 7200 0 EET}
- {2184703200 10800 1 EEST}
+ {2184706800 10800 1 EEST}
{2202757200 7200 0 EET}
- {2216757600 10800 1 EEST}
+ {2216761200 10800 1 EEST}
{2234811600 7200 0 EET}
- {2248207200 10800 1 EEST}
+ {2248210800 10800 1 EEST}
{2266261200 7200 0 EET}
- {2279656800 10800 1 EEST}
+ {2279660400 10800 1 EEST}
{2297710800 7200 0 EET}
- {2311106400 10800 1 EEST}
+ {2311110000 10800 1 EEST}
{2329160400 7200 0 EET}
- {2342556000 10800 1 EEST}
+ {2342559600 10800 1 EEST}
{2360610000 7200 0 EET}
- {2374610400 10800 1 EEST}
+ {2374009200 10800 1 EEST}
{2392664400 7200 0 EET}
- {2406060000 10800 1 EEST}
+ {2406063600 10800 1 EEST}
{2424114000 7200 0 EET}
- {2437509600 10800 1 EEST}
+ {2437513200 10800 1 EEST}
{2455563600 7200 0 EET}
- {2468959200 10800 1 EEST}
+ {2468962800 10800 1 EEST}
{2487013200 7200 0 EET}
- {2500408800 10800 1 EEST}
+ {2500412400 10800 1 EEST}
{2518462800 7200 0 EET}
- {2531858400 10800 1 EEST}
+ {2531862000 10800 1 EEST}
{2549912400 7200 0 EET}
- {2563912800 10800 1 EEST}
+ {2563311600 10800 1 EEST}
{2581966800 7200 0 EET}
- {2595362400 10800 1 EEST}
+ {2595366000 10800 1 EEST}
{2613416400 7200 0 EET}
- {2626812000 10800 1 EEST}
+ {2626815600 10800 1 EEST}
{2644866000 7200 0 EET}
- {2658261600 10800 1 EEST}
+ {2658265200 10800 1 EEST}
{2676315600 7200 0 EET}
- {2689711200 10800 1 EEST}
+ {2689714800 10800 1 EEST}
{2707765200 7200 0 EET}
- {2721765600 10800 1 EEST}
+ {2721164400 10800 1 EEST}
{2739819600 7200 0 EET}
- {2753215200 10800 1 EEST}
+ {2753218800 10800 1 EEST}
{2771269200 7200 0 EET}
- {2784664800 10800 1 EEST}
+ {2784668400 10800 1 EEST}
{2802718800 7200 0 EET}
- {2816114400 10800 1 EEST}
+ {2816118000 10800 1 EEST}
{2834168400 7200 0 EET}
- {2847564000 10800 1 EEST}
+ {2847567600 10800 1 EEST}
{2865618000 7200 0 EET}
- {2879013600 10800 1 EEST}
+ {2879017200 10800 1 EEST}
{2897067600 7200 0 EET}
- {2911068000 10800 1 EEST}
+ {2910466800 10800 1 EEST}
{2929122000 7200 0 EET}
- {2942517600 10800 1 EEST}
+ {2942521200 10800 1 EEST}
{2960571600 7200 0 EET}
- {2973967200 10800 1 EEST}
+ {2973970800 10800 1 EEST}
{2992021200 7200 0 EET}
- {3005416800 10800 1 EEST}
+ {3005420400 10800 1 EEST}
{3023470800 7200 0 EET}
- {3036866400 10800 1 EEST}
+ {3036870000 10800 1 EEST}
{3054920400 7200 0 EET}
- {3068316000 10800 1 EEST}
+ {3068319600 10800 1 EEST}
{3086370000 7200 0 EET}
- {3100370400 10800 1 EEST}
+ {3100374000 10800 1 EEST}
{3118424400 7200 0 EET}
- {3131820000 10800 1 EEST}
+ {3131823600 10800 1 EEST}
{3149874000 7200 0 EET}
- {3163269600 10800 1 EEST}
+ {3163273200 10800 1 EEST}
{3181323600 7200 0 EET}
- {3194719200 10800 1 EEST}
+ {3194722800 10800 1 EEST}
{3212773200 7200 0 EET}
- {3226168800 10800 1 EEST}
+ {3226172400 10800 1 EEST}
{3244222800 7200 0 EET}
- {3258223200 10800 1 EEST}
+ {3257622000 10800 1 EEST}
{3276277200 7200 0 EET}
- {3289672800 10800 1 EEST}
+ {3289676400 10800 1 EEST}
{3307726800 7200 0 EET}
- {3321122400 10800 1 EEST}
+ {3321126000 10800 1 EEST}
{3339176400 7200 0 EET}
- {3352572000 10800 1 EEST}
+ {3352575600 10800 1 EEST}
{3370626000 7200 0 EET}
- {3384021600 10800 1 EEST}
+ {3384025200 10800 1 EEST}
{3402075600 7200 0 EET}
- {3415471200 10800 1 EEST}
+ {3415474800 10800 1 EEST}
{3433525200 7200 0 EET}
- {3447525600 10800 1 EEST}
+ {3446924400 10800 1 EEST}
{3465579600 7200 0 EET}
- {3478975200 10800 1 EEST}
+ {3478978800 10800 1 EEST}
{3497029200 7200 0 EET}
- {3510424800 10800 1 EEST}
+ {3510428400 10800 1 EEST}
{3528478800 7200 0 EET}
- {3541874400 10800 1 EEST}
+ {3541878000 10800 1 EEST}
{3559928400 7200 0 EET}
- {3573324000 10800 1 EEST}
+ {3573327600 10800 1 EEST}
{3591378000 7200 0 EET}
- {3605378400 10800 1 EEST}
+ {3604777200 10800 1 EEST}
{3623432400 7200 0 EET}
- {3636828000 10800 1 EEST}
+ {3636831600 10800 1 EEST}
{3654882000 7200 0 EET}
- {3668277600 10800 1 EEST}
+ {3668281200 10800 1 EEST}
{3686331600 7200 0 EET}
- {3699727200 10800 1 EEST}
+ {3699730800 10800 1 EEST}
{3717781200 7200 0 EET}
- {3731176800 10800 1 EEST}
+ {3731180400 10800 1 EEST}
{3749230800 7200 0 EET}
- {3762626400 10800 1 EEST}
+ {3762630000 10800 1 EEST}
{3780680400 7200 0 EET}
- {3794680800 10800 1 EEST}
+ {3794079600 10800 1 EEST}
{3812734800 7200 0 EET}
- {3826130400 10800 1 EEST}
+ {3826134000 10800 1 EEST}
{3844184400 7200 0 EET}
- {3857580000 10800 1 EEST}
+ {3857583600 10800 1 EEST}
{3875634000 7200 0 EET}
- {3889029600 10800 1 EEST}
+ {3889033200 10800 1 EEST}
{3907083600 7200 0 EET}
- {3920479200 10800 1 EEST}
+ {3920482800 10800 1 EEST}
{3938533200 7200 0 EET}
- {3951928800 10800 1 EEST}
+ {3951932400 10800 1 EEST}
{3969982800 7200 0 EET}
- {3983983200 10800 1 EEST}
+ {3983986800 10800 1 EEST}
{4002037200 7200 0 EET}
- {4015432800 10800 1 EEST}
+ {4015436400 10800 1 EEST}
{4033486800 7200 0 EET}
- {4046882400 10800 1 EEST}
+ {4046886000 10800 1 EEST}
{4064936400 7200 0 EET}
- {4078332000 10800 1 EEST}
+ {4078335600 10800 1 EEST}
{4096386000 7200 0 EET}
}
diff --git a/library/tzdata/Asia/Hebron b/library/tzdata/Asia/Hebron
index 9049d93..2db45f2 100644
--- a/library/tzdata/Asia/Hebron
+++ b/library/tzdata/Asia/Hebron
@@ -106,172 +106,172 @@ set TZData(:Asia/Hebron) {
{1414098000 7200 0 EET}
{1427493600 10800 1 EEST}
{1445547600 7200 0 EET}
- {1458943200 10800 1 EEST}
+ {1458946800 10800 1 EEST}
{1476997200 7200 0 EET}
- {1490997600 10800 1 EEST}
+ {1490396400 10800 1 EEST}
{1509051600 7200 0 EET}
- {1522447200 10800 1 EEST}
+ {1522450800 10800 1 EEST}
{1540501200 7200 0 EET}
- {1553896800 10800 1 EEST}
+ {1553900400 10800 1 EEST}
{1571950800 7200 0 EET}
- {1585346400 10800 1 EEST}
+ {1585350000 10800 1 EEST}
{1603400400 7200 0 EET}
- {1616796000 10800 1 EEST}
+ {1616799600 10800 1 EEST}
{1634850000 7200 0 EET}
- {1648245600 10800 1 EEST}
+ {1648249200 10800 1 EEST}
{1666299600 7200 0 EET}
- {1680300000 10800 1 EEST}
+ {1679698800 10800 1 EEST}
{1698354000 7200 0 EET}
- {1711749600 10800 1 EEST}
+ {1711753200 10800 1 EEST}
{1729803600 7200 0 EET}
- {1743199200 10800 1 EEST}
+ {1743202800 10800 1 EEST}
{1761253200 7200 0 EET}
- {1774648800 10800 1 EEST}
+ {1774652400 10800 1 EEST}
{1792702800 7200 0 EET}
- {1806098400 10800 1 EEST}
+ {1806102000 10800 1 EEST}
{1824152400 7200 0 EET}
- {1838152800 10800 1 EEST}
+ {1837551600 10800 1 EEST}
{1856206800 7200 0 EET}
- {1869602400 10800 1 EEST}
+ {1869606000 10800 1 EEST}
{1887656400 7200 0 EET}
- {1901052000 10800 1 EEST}
+ {1901055600 10800 1 EEST}
{1919106000 7200 0 EET}
- {1932501600 10800 1 EEST}
+ {1932505200 10800 1 EEST}
{1950555600 7200 0 EET}
- {1963951200 10800 1 EEST}
+ {1963954800 10800 1 EEST}
{1982005200 7200 0 EET}
- {1995400800 10800 1 EEST}
+ {1995404400 10800 1 EEST}
{2013454800 7200 0 EET}
- {2027455200 10800 1 EEST}
+ {2026854000 10800 1 EEST}
{2045509200 7200 0 EET}
- {2058904800 10800 1 EEST}
+ {2058908400 10800 1 EEST}
{2076958800 7200 0 EET}
- {2090354400 10800 1 EEST}
+ {2090358000 10800 1 EEST}
{2108408400 7200 0 EET}
- {2121804000 10800 1 EEST}
+ {2121807600 10800 1 EEST}
{2139858000 7200 0 EET}
- {2153253600 10800 1 EEST}
+ {2153257200 10800 1 EEST}
{2171307600 7200 0 EET}
- {2184703200 10800 1 EEST}
+ {2184706800 10800 1 EEST}
{2202757200 7200 0 EET}
- {2216757600 10800 1 EEST}
+ {2216761200 10800 1 EEST}
{2234811600 7200 0 EET}
- {2248207200 10800 1 EEST}
+ {2248210800 10800 1 EEST}
{2266261200 7200 0 EET}
- {2279656800 10800 1 EEST}
+ {2279660400 10800 1 EEST}
{2297710800 7200 0 EET}
- {2311106400 10800 1 EEST}
+ {2311110000 10800 1 EEST}
{2329160400 7200 0 EET}
- {2342556000 10800 1 EEST}
+ {2342559600 10800 1 EEST}
{2360610000 7200 0 EET}
- {2374610400 10800 1 EEST}
+ {2374009200 10800 1 EEST}
{2392664400 7200 0 EET}
- {2406060000 10800 1 EEST}
+ {2406063600 10800 1 EEST}
{2424114000 7200 0 EET}
- {2437509600 10800 1 EEST}
+ {2437513200 10800 1 EEST}
{2455563600 7200 0 EET}
- {2468959200 10800 1 EEST}
+ {2468962800 10800 1 EEST}
{2487013200 7200 0 EET}
- {2500408800 10800 1 EEST}
+ {2500412400 10800 1 EEST}
{2518462800 7200 0 EET}
- {2531858400 10800 1 EEST}
+ {2531862000 10800 1 EEST}
{2549912400 7200 0 EET}
- {2563912800 10800 1 EEST}
+ {2563311600 10800 1 EEST}
{2581966800 7200 0 EET}
- {2595362400 10800 1 EEST}
+ {2595366000 10800 1 EEST}
{2613416400 7200 0 EET}
- {2626812000 10800 1 EEST}
+ {2626815600 10800 1 EEST}
{2644866000 7200 0 EET}
- {2658261600 10800 1 EEST}
+ {2658265200 10800 1 EEST}
{2676315600 7200 0 EET}
- {2689711200 10800 1 EEST}
+ {2689714800 10800 1 EEST}
{2707765200 7200 0 EET}
- {2721765600 10800 1 EEST}
+ {2721164400 10800 1 EEST}
{2739819600 7200 0 EET}
- {2753215200 10800 1 EEST}
+ {2753218800 10800 1 EEST}
{2771269200 7200 0 EET}
- {2784664800 10800 1 EEST}
+ {2784668400 10800 1 EEST}
{2802718800 7200 0 EET}
- {2816114400 10800 1 EEST}
+ {2816118000 10800 1 EEST}
{2834168400 7200 0 EET}
- {2847564000 10800 1 EEST}
+ {2847567600 10800 1 EEST}
{2865618000 7200 0 EET}
- {2879013600 10800 1 EEST}
+ {2879017200 10800 1 EEST}
{2897067600 7200 0 EET}
- {2911068000 10800 1 EEST}
+ {2910466800 10800 1 EEST}
{2929122000 7200 0 EET}
- {2942517600 10800 1 EEST}
+ {2942521200 10800 1 EEST}
{2960571600 7200 0 EET}
- {2973967200 10800 1 EEST}
+ {2973970800 10800 1 EEST}
{2992021200 7200 0 EET}
- {3005416800 10800 1 EEST}
+ {3005420400 10800 1 EEST}
{3023470800 7200 0 EET}
- {3036866400 10800 1 EEST}
+ {3036870000 10800 1 EEST}
{3054920400 7200 0 EET}
- {3068316000 10800 1 EEST}
+ {3068319600 10800 1 EEST}
{3086370000 7200 0 EET}
- {3100370400 10800 1 EEST}
+ {3100374000 10800 1 EEST}
{3118424400 7200 0 EET}
- {3131820000 10800 1 EEST}
+ {3131823600 10800 1 EEST}
{3149874000 7200 0 EET}
- {3163269600 10800 1 EEST}
+ {3163273200 10800 1 EEST}
{3181323600 7200 0 EET}
- {3194719200 10800 1 EEST}
+ {3194722800 10800 1 EEST}
{3212773200 7200 0 EET}
- {3226168800 10800 1 EEST}
+ {3226172400 10800 1 EEST}
{3244222800 7200 0 EET}
- {3258223200 10800 1 EEST}
+ {3257622000 10800 1 EEST}
{3276277200 7200 0 EET}
- {3289672800 10800 1 EEST}
+ {3289676400 10800 1 EEST}
{3307726800 7200 0 EET}
- {3321122400 10800 1 EEST}
+ {3321126000 10800 1 EEST}
{3339176400 7200 0 EET}
- {3352572000 10800 1 EEST}
+ {3352575600 10800 1 EEST}
{3370626000 7200 0 EET}
- {3384021600 10800 1 EEST}
+ {3384025200 10800 1 EEST}
{3402075600 7200 0 EET}
- {3415471200 10800 1 EEST}
+ {3415474800 10800 1 EEST}
{3433525200 7200 0 EET}
- {3447525600 10800 1 EEST}
+ {3446924400 10800 1 EEST}
{3465579600 7200 0 EET}
- {3478975200 10800 1 EEST}
+ {3478978800 10800 1 EEST}
{3497029200 7200 0 EET}
- {3510424800 10800 1 EEST}
+ {3510428400 10800 1 EEST}
{3528478800 7200 0 EET}
- {3541874400 10800 1 EEST}
+ {3541878000 10800 1 EEST}
{3559928400 7200 0 EET}
- {3573324000 10800 1 EEST}
+ {3573327600 10800 1 EEST}
{3591378000 7200 0 EET}
- {3605378400 10800 1 EEST}
+ {3604777200 10800 1 EEST}
{3623432400 7200 0 EET}
- {3636828000 10800 1 EEST}
+ {3636831600 10800 1 EEST}
{3654882000 7200 0 EET}
- {3668277600 10800 1 EEST}
+ {3668281200 10800 1 EEST}
{3686331600 7200 0 EET}
- {3699727200 10800 1 EEST}
+ {3699730800 10800 1 EEST}
{3717781200 7200 0 EET}
- {3731176800 10800 1 EEST}
+ {3731180400 10800 1 EEST}
{3749230800 7200 0 EET}
- {3762626400 10800 1 EEST}
+ {3762630000 10800 1 EEST}
{3780680400 7200 0 EET}
- {3794680800 10800 1 EEST}
+ {3794079600 10800 1 EEST}
{3812734800 7200 0 EET}
- {3826130400 10800 1 EEST}
+ {3826134000 10800 1 EEST}
{3844184400 7200 0 EET}
- {3857580000 10800 1 EEST}
+ {3857583600 10800 1 EEST}
{3875634000 7200 0 EET}
- {3889029600 10800 1 EEST}
+ {3889033200 10800 1 EEST}
{3907083600 7200 0 EET}
- {3920479200 10800 1 EEST}
+ {3920482800 10800 1 EEST}
{3938533200 7200 0 EET}
- {3951928800 10800 1 EEST}
+ {3951932400 10800 1 EEST}
{3969982800 7200 0 EET}
- {3983983200 10800 1 EEST}
+ {3983986800 10800 1 EEST}
{4002037200 7200 0 EET}
- {4015432800 10800 1 EEST}
+ {4015436400 10800 1 EEST}
{4033486800 7200 0 EET}
- {4046882400 10800 1 EEST}
+ {4046886000 10800 1 EEST}
{4064936400 7200 0 EET}
- {4078332000 10800 1 EEST}
+ {4078335600 10800 1 EEST}
{4096386000 7200 0 EET}
}
diff --git a/library/tzdata/Asia/Sakhalin b/library/tzdata/Asia/Sakhalin
index eed20ba..9247046 100644
--- a/library/tzdata/Asia/Sakhalin
+++ b/library/tzdata/Asia/Sakhalin
@@ -70,4 +70,5 @@ set TZData(:Asia/Sakhalin) {
{1288454400 36000 0 SAKT}
{1301155200 39600 0 SAKT}
{1414249200 36000 0 SAKT}
+ {1459008000 39600 0 SAKT}
}
diff --git a/library/tzdata/Europe/Astrakhan b/library/tzdata/Europe/Astrakhan
new file mode 100644
index 0000000..e5e9c26
--- /dev/null
+++ b/library/tzdata/Europe/Astrakhan
@@ -0,0 +1,70 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Astrakhan) {
+ {-9223372036854775808 11532 0 LMT}
+ {-1441249932 10800 0 +03}
+ {-1247540400 14400 0 +05}
+ {354916800 18000 1 +05}
+ {370724400 14400 0 +04}
+ {386452800 18000 1 +05}
+ {402260400 14400 0 +04}
+ {417988800 18000 1 +05}
+ {433796400 14400 0 +04}
+ {449611200 18000 1 +05}
+ {465343200 14400 0 +04}
+ {481068000 18000 1 +05}
+ {496792800 14400 0 +04}
+ {512517600 18000 1 +05}
+ {528242400 14400 0 +04}
+ {543967200 18000 1 +05}
+ {559692000 14400 0 +04}
+ {575416800 18000 1 +05}
+ {591141600 14400 0 +04}
+ {606866400 10800 0 +04}
+ {606870000 14400 1 +04}
+ {622594800 10800 0 +03}
+ {638319600 14400 1 +04}
+ {654649200 10800 0 +03}
+ {670374000 14400 0 +04}
+ {701820000 14400 0 +04}
+ {717534000 10800 0 +03}
+ {733273200 14400 1 +04}
+ {748998000 10800 0 +03}
+ {764722800 14400 1 +04}
+ {780447600 10800 0 +03}
+ {796172400 14400 1 +04}
+ {811897200 10800 0 +03}
+ {828226800 14400 1 +04}
+ {846370800 10800 0 +03}
+ {859676400 14400 1 +04}
+ {877820400 10800 0 +03}
+ {891126000 14400 1 +04}
+ {909270000 10800 0 +03}
+ {922575600 14400 1 +04}
+ {941324400 10800 0 +03}
+ {954025200 14400 1 +04}
+ {972774000 10800 0 +03}
+ {985474800 14400 1 +04}
+ {1004223600 10800 0 +03}
+ {1017529200 14400 1 +04}
+ {1035673200 10800 0 +03}
+ {1048978800 14400 1 +04}
+ {1067122800 10800 0 +03}
+ {1080428400 14400 1 +04}
+ {1099177200 10800 0 +03}
+ {1111878000 14400 1 +04}
+ {1130626800 10800 0 +03}
+ {1143327600 14400 1 +04}
+ {1162076400 10800 0 +03}
+ {1174777200 14400 1 +04}
+ {1193526000 10800 0 +03}
+ {1206831600 14400 1 +04}
+ {1224975600 10800 0 +03}
+ {1238281200 14400 1 +04}
+ {1256425200 10800 0 +03}
+ {1269730800 14400 1 +04}
+ {1288479600 10800 0 +03}
+ {1301180400 14400 0 +04}
+ {1414274400 10800 0 +03}
+ {1459033200 14400 0 +04}
+}
diff --git a/library/tzdata/Europe/Chisinau b/library/tzdata/Europe/Chisinau
index 5c240e7..db4c6db 100644
--- a/library/tzdata/Europe/Chisinau
+++ b/library/tzdata/Europe/Chisinau
@@ -46,9 +46,9 @@ set TZData(:Europe/Chisinau) {
{591145200 10800 0 MSK}
{606870000 14400 1 MSD}
{622594800 10800 0 MSK}
- {631141200 10800 0 MSK}
- {641941200 7200 0 EET}
- {662680800 7200 0 EEMMTT}
+ {638319600 14400 1 MSD}
+ {641948400 10800 0 EEST}
+ {654652800 7200 0 EET}
{670377600 10800 1 EEST}
{686102400 7200 0 EET}
{694216800 7200 0 EET}
diff --git a/library/tzdata/Europe/Samara b/library/tzdata/Europe/Samara
index ee9d989..47615de 100644
--- a/library/tzdata/Europe/Samara
+++ b/library/tzdata/Europe/Samara
@@ -28,7 +28,7 @@ set TZData(:Europe/Samara) {
{654649200 10800 0 MSK}
{670374000 7200 0 EEMMTT}
{670377600 10800 1 EEST}
- {686102400 10800 0 KUYT}
+ {686102400 10800 0 SAMT}
{687916800 14400 0 SAMT}
{701809200 18000 1 SAMST}
{717530400 14400 0 SAMT}
diff --git a/library/tzdata/Europe/Ulyanovsk b/library/tzdata/Europe/Ulyanovsk
new file mode 100644
index 0000000..b975622
--- /dev/null
+++ b/library/tzdata/Europe/Ulyanovsk
@@ -0,0 +1,73 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Ulyanovsk) {
+ {-9223372036854775808 11616 0 LMT}
+ {-1593825216 10800 0 +03}
+ {-1247540400 14400 0 +05}
+ {354916800 18000 1 +05}
+ {370724400 14400 0 +04}
+ {386452800 18000 1 +05}
+ {402260400 14400 0 +04}
+ {417988800 18000 1 +05}
+ {433796400 14400 0 +04}
+ {449611200 18000 1 +05}
+ {465343200 14400 0 +04}
+ {481068000 18000 1 +05}
+ {496792800 14400 0 +04}
+ {512517600 18000 1 +05}
+ {528242400 14400 0 +04}
+ {543967200 18000 1 +05}
+ {559692000 14400 0 +04}
+ {575416800 18000 1 +05}
+ {591141600 14400 0 +04}
+ {606866400 10800 0 +04}
+ {606870000 14400 1 +04}
+ {622594800 10800 0 +03}
+ {638319600 14400 1 +04}
+ {654649200 10800 0 +03}
+ {670374000 7200 0 +03}
+ {670377600 10800 1 +03}
+ {686102400 7200 0 +02}
+ {695779200 10800 0 +04}
+ {701812800 14400 1 +04}
+ {717534000 10800 0 +03}
+ {733273200 14400 1 +04}
+ {748998000 10800 0 +03}
+ {764722800 14400 1 +04}
+ {780447600 10800 0 +03}
+ {796172400 14400 1 +04}
+ {811897200 10800 0 +03}
+ {828226800 14400 1 +04}
+ {846370800 10800 0 +03}
+ {859676400 14400 1 +04}
+ {877820400 10800 0 +03}
+ {891126000 14400 1 +04}
+ {909270000 10800 0 +03}
+ {922575600 14400 1 +04}
+ {941324400 10800 0 +03}
+ {954025200 14400 1 +04}
+ {972774000 10800 0 +03}
+ {985474800 14400 1 +04}
+ {1004223600 10800 0 +03}
+ {1017529200 14400 1 +04}
+ {1035673200 10800 0 +03}
+ {1048978800 14400 1 +04}
+ {1067122800 10800 0 +03}
+ {1080428400 14400 1 +04}
+ {1099177200 10800 0 +03}
+ {1111878000 14400 1 +04}
+ {1130626800 10800 0 +03}
+ {1143327600 14400 1 +04}
+ {1162076400 10800 0 +03}
+ {1174777200 14400 1 +04}
+ {1193526000 10800 0 +03}
+ {1206831600 14400 1 +04}
+ {1224975600 10800 0 +03}
+ {1238281200 14400 1 +04}
+ {1256425200 10800 0 +03}
+ {1269730800 14400 1 +04}
+ {1288479600 10800 0 +03}
+ {1301180400 14400 0 +04}
+ {1414274400 10800 0 +03}
+ {1459033200 14400 0 +04}
+}
diff --git a/tests/compile.test b/tests/compile.test
index 6ef697c..6aa7fd1 100644
--- a/tests/compile.test
+++ b/tests/compile.test
@@ -224,6 +224,17 @@ test compile-5.2 {TclCompileForeachCmd: non-local variables} {
foreach-test
set ::foo
} 3
+test compile-5.3 {TclCompileForeachCmd: [Bug b9b2079e6d]} -setup {
+ proc demo {} {
+ foreach x y {
+ if 1 break else
+ }
+ }
+} -body {
+ demo
+} -cleanup {
+ rename demo {}
+} -returnCodes error -result {wrong # args: no script following "else" argument}
test compile-6.1 {TclCompileSetCmd: global scalar names with ::s} -setup {
catch {unset x}
diff --git a/tests/stringComp.test b/tests/stringComp.test
index a66525e..140a270 100644
--- a/tests/stringComp.test
+++ b/tests/stringComp.test
@@ -728,6 +728,16 @@ test stringComp-14.3 {Bug 0dca3bfa8f} {
expr {$arg ne $argCopy}
}} abcde
} 1
+test stringComp-14.4 {Bug 1af8de570511} {
+ apply {{x y} {
+ # Generate an unshared string value
+ set val ""
+ for { set i 0 } { $i < $x } { incr i } {
+ set val [format "0%s" $val]
+ }
+ string replace $val[unset val] 1 1 $y
+ }} 4 x
+} 0x00
## string tolower
## not yet bc
diff --git a/unix/tclUnixNotfy.c b/unix/tclUnixNotfy.c
index 48ba0cc..1457890 100644
--- a/unix/tclUnixNotfy.c
+++ b/unix/tclUnixNotfy.c
@@ -433,9 +433,11 @@ Tcl_FinalizeNotifier(
"unable to write q to triggerPipe");
}
close(triggerPipe);
+ pthread_mutex_lock(&notifierMutex);
while(triggerPipe != -1) {
pthread_cond_wait(&notifierCV, &notifierMutex);
}
+ pthread_mutex_unlock(&notifierMutex);
if (notifierThreadRunning) {
int result = pthread_join((pthread_t) notifierThread, NULL);
diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c
index ea03332..554a2dc 100644
--- a/unix/tclUnixThrd.c
+++ b/unix/tclUnixThrd.c
@@ -44,13 +44,6 @@ static pthread_mutex_t initLock = PTHREAD_MUTEX_INITIALIZER;
static pthread_mutex_t allocLock = PTHREAD_MUTEX_INITIALIZER;
static pthread_mutex_t *allocLockPtr = &allocLock;
-/*
- * These are for the critical sections inside this file.
- */
-
-#define MASTER_LOCK pthread_mutex_lock(&masterLock)
-#define MASTER_UNLOCK pthread_mutex_unlock(&masterLock)
-
#endif /* TCL_THREADS */
/*
@@ -252,7 +245,7 @@ TclpInitLock(void)
/*
*----------------------------------------------------------------------
*
- * TclpFinalizeLock
+ * TclFinalizeLock
*
* This procedure is used to destroy all private resources used in this
* file.
@@ -421,7 +414,7 @@ Tcl_MutexLock(
pthread_mutex_t *pmutexPtr;
if (*mutexPtr == NULL) {
- MASTER_LOCK;
+ pthread_mutex_lock(&masterLock);
if (*mutexPtr == NULL) {
/*
* Double inside master lock check to avoid a race condition.
@@ -432,7 +425,7 @@ Tcl_MutexLock(
*mutexPtr = (Tcl_Mutex)pmutexPtr;
TclRememberMutex(mutexPtr);
}
- MASTER_UNLOCK;
+ pthread_mutex_unlock(&masterLock);
}
pmutexPtr = *((pthread_mutex_t **)mutexPtr);
pthread_mutex_lock(pmutexPtr);
@@ -529,7 +522,7 @@ Tcl_ConditionWait(
struct timespec ptime;
if (*condPtr == NULL) {
- MASTER_LOCK;
+ pthread_mutex_lock(&masterLock);
/*
* Double check inside mutex to avoid race, then initialize condition
@@ -542,7 +535,7 @@ Tcl_ConditionWait(
*condPtr = (Tcl_Condition) pcondPtr;
TclRememberCondition(condPtr);
}
- MASTER_UNLOCK;
+ pthread_mutex_unlock(&masterLock);
}
pmutexPtr = *((pthread_mutex_t **)mutexPtr);
pcondPtr = *((pthread_cond_t **)condPtr);
diff --git a/win/tclWinThrd.c b/win/tclWinThrd.c
index 1c9d483..e44363b 100644
--- a/win/tclWinThrd.c
+++ b/win/tclWinThrd.c
@@ -29,10 +29,7 @@ _CRTIMP unsigned int __cdecl _controlfp (unsigned int unNew, unsigned int unMask
*/
static CRITICAL_SECTION masterLock;
-static int init = 0;
-#define MASTER_LOCK TclpMasterLock()
-#define MASTER_UNLOCK TclpMasterUnlock()
-
+static int initialized = 0;
/*
* This is the master lock used to serialize initialization and finalization
@@ -360,7 +357,7 @@ Tcl_GetCurrentThread(void)
void
TclpInitLock(void)
{
- if (!init) {
+ if (!initialized) {
/*
* There is a fundamental race here that is solved by creating the
* first Tcl interpreter in a single threaded environment. Once the
@@ -368,7 +365,7 @@ TclpInitLock(void)
* that create interpreters in parallel.
*/
- init = 1;
+ initialized = 1;
InitializeCriticalSection(&joinLock);
InitializeCriticalSection(&initLock);
InitializeCriticalSection(&masterLock);
@@ -422,7 +419,7 @@ TclpInitUnlock(void)
void
TclpMasterLock(void)
{
- if (!init) {
+ if (!initialized) {
/*
* There is a fundamental race here that is solved by creating the
* first Tcl interpreter in a single threaded environment. Once the
@@ -430,7 +427,7 @@ TclpMasterLock(void)
* that create interpreters in parallel.
*/
- init = 1;
+ initialized = 1;
InitializeCriticalSection(&joinLock);
InitializeCriticalSection(&initLock);
InitializeCriticalSection(&masterLock);
@@ -497,7 +494,7 @@ Tcl_GetAllocMutex(void)
/*
*----------------------------------------------------------------------
*
- * TclpFinalizeLock
+ * TclFinalizeLock
*
* This procedure is used to destroy all private resources used in this
* file.
@@ -515,7 +512,7 @@ Tcl_GetAllocMutex(void)
void
TclFinalizeLock(void)
{
- MASTER_LOCK;
+ TclpMasterLock();
DeleteCriticalSection(&joinLock);
/*
@@ -523,7 +520,7 @@ TclFinalizeLock(void)
*/
DeleteCriticalSection(&masterLock);
- init = 0;
+ initialized = 0;
#ifdef TCL_THREADS
if (allocOnce) {
@@ -570,7 +567,7 @@ Tcl_MutexLock(
CRITICAL_SECTION *csPtr;
if (*mutexPtr == NULL) {
- MASTER_LOCK;
+ TclpMasterLock();
/*
* Double inside master lock check to avoid a race.
@@ -582,7 +579,7 @@ Tcl_MutexLock(
*mutexPtr = (Tcl_Mutex)csPtr;
TclRememberMutex(mutexPtr);
}
- MASTER_UNLOCK;
+ TclpMasterUnlock();
}
csPtr = *((CRITICAL_SECTION **)mutexPtr);
EnterCriticalSection(csPtr);
@@ -684,7 +681,7 @@ Tcl_ConditionWait(
*/
if (tsdPtr->flags == WIN_THREAD_UNINIT) {
- MASTER_LOCK;
+ TclpMasterLock();
/*
* Create the per-thread event and queue pointers.
@@ -698,7 +695,7 @@ Tcl_ConditionWait(
tsdPtr->flags = WIN_THREAD_RUNNING;
doExit = 1;
}
- MASTER_UNLOCK;
+ TclpMasterUnlock();
if (doExit) {
/*
@@ -713,7 +710,7 @@ Tcl_ConditionWait(
}
if (*condPtr == NULL) {
- MASTER_LOCK;
+ TclpMasterLock();
/*
* Initialize the per-condition queue pointers and Mutex.
@@ -727,7 +724,7 @@ Tcl_ConditionWait(
*condPtr = (Tcl_Condition) winCondPtr;
TclRememberCondition(condPtr);
}
- MASTER_UNLOCK;
+ TclpMasterUnlock();
}
csPtr = *((CRITICAL_SECTION **)mutexPtr);
winCondPtr = *((WinCondition **)condPtr);