From 812f825cfcb54b05a3df59e2cb1585af3da47c67 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 10 Mar 2016 20:03:38 +0000 Subject: [b9b2079e6d] Proposed fix. When a compileProc fails, it may have done an arbitrary amount of partial work, which needs to be undone. When the exception handling machinery got its last big revision, the undoing of what it does was neglected. I think this patch gets it all, but more eyes would be good. --- generic/tclEnsemble.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) 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 -- cgit v0.12 From 8ad967404ac779d2dff31836f295f22ed6fc130c Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 11 Mar 2016 15:00:51 +0000 Subject: New test compile-5.3 for the bug. --- tests/compile.test | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/compile.test b/tests/compile.test index 46e678a..bb12050 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} -- cgit v0.12 From b1d25860c469bbaccef10bb6a596fb93d397b2b0 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 11 Mar 2016 15:40:45 +0000 Subject: Simple change gets most of the effect. Fails to handle backslash. anyone care? --- generic/tclCompCmdsGR.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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); -- cgit v0.12 From 671e2228ac8024e945034191da52584381ce61ac Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Wed, 16 Mar 2016 09:58:08 +0000 Subject: (cherry-pick from trunk): Update tzdata to 2016b from ietf.org --- library/tzdata/America/Port-au-Prince | 168 ---------------------------------- library/tzdata/Asia/Barnaul | 71 ++++++++++++++ library/tzdata/Asia/Gaza | 168 +++++++++++++++++----------------- library/tzdata/Asia/Hebron | 168 +++++++++++++++++----------------- library/tzdata/Asia/Sakhalin | 1 + library/tzdata/Europe/Astrakhan | 70 ++++++++++++++ library/tzdata/Europe/Chisinau | 6 +- library/tzdata/Europe/Samara | 2 +- library/tzdata/Europe/Ulyanovsk | 73 +++++++++++++++ 9 files changed, 387 insertions(+), 340 deletions(-) create mode 100644 library/tzdata/Asia/Barnaul create mode 100644 library/tzdata/Europe/Astrakhan create mode 100644 library/tzdata/Europe/Ulyanovsk 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} +} -- cgit v0.12 From bfa7cb3c5d224a86a6136bc063018638eb3b9a0b Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 17 Mar 2016 13:14:22 +0000 Subject: [ae38befcfb] Rewrite TclGetInnermostExceptionRange() for fewer iterations. --- generic/tclCompile.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) 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 ; iexceptArrayNext ; 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; } /* -- cgit v0.12