From f0800555067a88f3f16b15ce5f99a77c506c589b Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Sun, 24 Mar 2019 16:43:41 +0000 Subject: Since only bytes 0xF0 - 0xF4 can be the first byte of a valid 4-byte UTF-8 byte sequence, account for that in Tcl_UtfCharComplete(). Only effective when TCL_UTF_MAX>3 --- generic/tclUtf.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/generic/tclUtf.c b/generic/tclUtf.c index 1ef35a6..34fcdb5 100644 --- a/generic/tclUtf.c +++ b/generic/tclUtf.c @@ -69,11 +69,11 @@ static CONST unsigned char totalBytes[256] = { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, #if TCL_UTF_MAX > 3 - 4,4,4,4,4,4,4,4, + 4,4,4,4,4, #else - 1,1,1,1,1,1,1,1, + 1,1,1,1,1, #endif - 1,1,1,1,1,1,1,1 + 1,1,1,1,1,1,1,1,1,1,1 }; /* -- cgit v0.12 From 6d27f27fe64178257962cf3fa9cab61b03cbcc51 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Mon, 25 Mar 2019 21:50:34 +0000 Subject: Eliminate all usage of mp_iszero/mp_iseven/mp_isodd/mp_isneg from libtommath: In the upcoming new version those will become real functions, causing possible binary incompatibility. This change makes Tcl independant from libtommath's changes. --- generic/tclBasic.c | 2 +- generic/tclExecute.c | 8 ++++---- generic/tclStrToD.c | 6 +++--- generic/tclStubInit.c | 10 ++++++++++ generic/tclTestObj.c | 4 ++-- generic/tclTomMath.decls | 7 +++++++ generic/tclTomMathDecls.h | 36 ++++++++++++++++++++++++++++++++++++ unix/Makefile.in | 14 +++++++++++--- win/Makefile.in | 2 ++ win/makefile.vc | 2 ++ 10 files changed, 78 insertions(+), 13 deletions(-) diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 9429c24..5480835 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -7252,7 +7252,7 @@ ExprIsqrtFunc( if (Tcl_GetBignumFromObj(interp, objv[1], &big) != TCL_OK) { return TCL_ERROR; } - if (SIGN(&big) == MP_NEG) { + if (big.sign) { mp_clear(&big); goto negarg; } diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 77a173e..ca14a55 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -8367,7 +8367,7 @@ ExecuteExtendedBinaryMathOp( mp_init(&bigResult); mp_init(&bigRemainder); mp_div(&big1, &big2, &bigResult, &bigRemainder); - if (!mp_iszero(&bigRemainder) && (bigRemainder.sign != big2.sign)) { + if ((bigRemainder.used) != 0 && (bigRemainder.sign != big2.sign)) { /* * Convert to Tcl's integer division rules. */ @@ -8768,7 +8768,7 @@ ExecuteExtendedBinaryMathOp( Tcl_TakeBignumFromObj(NULL, value2Ptr, &big2); negativeExponent = (mp_cmp_d(&big2, 0) == MP_LT); mp_mod_2d(&big2, 1, &big2); - oddExponent = !mp_iszero(&big2); + oddExponent = big2.used != 0; mp_clear(&big2); break; } @@ -9249,7 +9249,7 @@ ExecuteExtendedBinaryMathOp( mp_mul(&big1, &big2, &bigResult); break; case INST_DIV: - if (mp_iszero(&big2)) { + if (big2.used == 0) { mp_clear(&big1); mp_clear(&big2); mp_clear(&bigResult); @@ -9258,7 +9258,7 @@ ExecuteExtendedBinaryMathOp( mp_init(&bigRemainder); mp_div(&big1, &big2, &bigResult, &bigRemainder); /* TODO: internals intrusion */ - if (!mp_iszero(&bigRemainder) + if (bigRemainder.used != 0 && (bigRemainder.sign != big2.sign)) { /* * Convert to Tcl's integer division rules. diff --git a/generic/tclStrToD.c b/generic/tclStrToD.c index 5d601e4..6257409 100644 --- a/generic/tclStrToD.c +++ b/generic/tclStrToD.c @@ -3162,7 +3162,7 @@ ShouldBankerRoundUpPowD( int isodd) /* 1 if the digit is odd, 0 if even. */ { int i; - static const mp_digit topbit = 1 << (DIGIT_BIT - 1); + static const mp_digit topbit = ((mp_digit)1) << (DIGIT_BIT - 1); if (b->used < sd || (b->dp[sd-1] & topbit) == 0) { return 0; @@ -4631,7 +4631,7 @@ TclBignumToDouble( */ mp_div_2d(a, -shift, &b, NULL); - if (mp_isodd(&b)) { + if (mp_get_bit(&b, 0)) { if (b.sign == MP_ZPOS) { mp_add_d(&b, 1, &b); } else { @@ -4720,7 +4720,7 @@ TclCeil( mp_int d; mp_init(&d); mp_div_2d(a, -shift, &b, &d); - exact = mp_iszero(&d); + exact = d.used == 0; mp_clear(&d); } else { mp_copy(a, &b); diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c index 3ff686c..1d15715 100644 --- a/generic/tclStubInit.c +++ b/generic/tclStubInit.c @@ -854,6 +854,16 @@ const TclTomMathStubs tclTomMathStubs = { TclBNInitBignumFromWideInt, /* 65 */ TclBNInitBignumFromWideUInt, /* 66 */ TclBN_mp_expt_d_ex, /* 67 */ + 0, /* 68 */ + 0, /* 69 */ + TclBN_mp_set_long, /* 70 */ + 0, /* 71 */ + 0, /* 72 */ + 0, /* 73 */ + 0, /* 74 */ + 0, /* 75 */ + 0, /* 76 */ + TclBN_mp_get_bit, /* 77 */ }; static const TclStubHooks tclStubHooks = { diff --git a/generic/tclTestObj.c b/generic/tclTestObj.c index f7d2bae..e395435 100644 --- a/generic/tclTestObj.c +++ b/generic/tclTestObj.c @@ -290,9 +290,9 @@ TestbignumobjCmd( return TCL_ERROR; } if (!Tcl_IsShared(varPtr[varIndex])) { - Tcl_SetIntObj(varPtr[varIndex], mp_iseven(&bignumValue)); + Tcl_SetIntObj(varPtr[varIndex], !mp_get_bit(&bignumValue, 0)); } else { - SetVarToObj(varPtr, varIndex, Tcl_NewIntObj(mp_iseven(&bignumValue))); + SetVarToObj(varPtr, varIndex, Tcl_NewIntObj(!mp_get_bit(&bignumValue, 0))); } mp_clear(&bignumValue); break; diff --git a/generic/tclTomMath.decls b/generic/tclTomMath.decls index 065fe09..09bf97d 100644 --- a/generic/tclTomMath.decls +++ b/generic/tclTomMath.decls @@ -237,6 +237,13 @@ declare 66 { declare 67 { int TclBN_mp_expt_d_ex(const mp_int *a, mp_digit b, mp_int *c, int fast) } +declare 70 { + int TclBN_mp_set_long(mp_int *a, unsigned long i) +} +declare 77 { + int TclBN_mp_get_bit(const mp_int *a, int b) +} + # Local Variables: # mode: tcl diff --git a/generic/tclTomMathDecls.h b/generic/tclTomMathDecls.h index 81cd7c9..dc06fc6 100644 --- a/generic/tclTomMathDecls.h +++ b/generic/tclTomMathDecls.h @@ -74,6 +74,7 @@ #define mp_exch TclBN_mp_exch #define mp_expt_d TclBN_mp_expt_d #define mp_expt_d_ex TclBN_mp_expt_d_ex +#define mp_get_bit TclBN_mp_get_bit #define mp_grow TclBN_mp_grow #define mp_init TclBN_mp_init #define mp_init_copy TclBN_mp_init_copy @@ -97,6 +98,7 @@ #define mp_rshd TclBN_mp_rshd #define mp_set TclBN_mp_set #define mp_set_int TclBN_mp_set_int +#define mp_set_long TclBN_mp_set_long #define mp_shrink TclBN_mp_shrink #define mp_sqr TclBN_mp_sqr #define mp_sqrt TclBN_mp_sqrt @@ -307,6 +309,18 @@ EXTERN void TclBNInitBignumFromWideUInt(mp_int *bignum, /* 67 */ EXTERN int TclBN_mp_expt_d_ex(const mp_int *a, mp_digit b, mp_int *c, int fast); +/* Slot 68 is reserved */ +/* Slot 69 is reserved */ +/* 70 */ +EXTERN int TclBN_mp_set_long(mp_int *a, unsigned long i); +/* Slot 71 is reserved */ +/* Slot 72 is reserved */ +/* Slot 73 is reserved */ +/* Slot 74 is reserved */ +/* Slot 75 is reserved */ +/* Slot 76 is reserved */ +/* 77 */ +EXTERN int TclBN_mp_get_bit(const mp_int *a, int b); typedef struct TclTomMathStubs { int magic; @@ -380,6 +394,16 @@ typedef struct TclTomMathStubs { void (*tclBNInitBignumFromWideInt) (mp_int *bignum, Tcl_WideInt initVal); /* 65 */ void (*tclBNInitBignumFromWideUInt) (mp_int *bignum, Tcl_WideUInt initVal); /* 66 */ int (*tclBN_mp_expt_d_ex) (const mp_int *a, mp_digit b, mp_int *c, int fast); /* 67 */ + void (*reserved68)(void); + void (*reserved69)(void); + int (*tclBN_mp_set_long) (mp_int *a, unsigned long i); /* 70 */ + void (*reserved71)(void); + void (*reserved72)(void); + void (*reserved73)(void); + void (*reserved74)(void); + void (*reserved75)(void); + void (*reserved76)(void); + int (*tclBN_mp_get_bit) (const mp_int *a, int b); /* 77 */ } TclTomMathStubs; extern const TclTomMathStubs *tclTomMathStubsPtr; @@ -530,6 +554,18 @@ extern const TclTomMathStubs *tclTomMathStubsPtr; (tclTomMathStubsPtr->tclBNInitBignumFromWideUInt) /* 66 */ #define TclBN_mp_expt_d_ex \ (tclTomMathStubsPtr->tclBN_mp_expt_d_ex) /* 67 */ +/* Slot 68 is reserved */ +/* Slot 69 is reserved */ +#define TclBN_mp_set_long \ + (tclTomMathStubsPtr->tclBN_mp_set_long) /* 70 */ +/* Slot 71 is reserved */ +/* Slot 72 is reserved */ +/* Slot 73 is reserved */ +/* Slot 74 is reserved */ +/* Slot 75 is reserved */ +/* Slot 76 is reserved */ +#define TclBN_mp_get_bit \ + (tclTomMathStubsPtr->tclBN_mp_get_bit) /* 77 */ #endif /* defined(USE_TCL_STUBS) */ diff --git a/unix/Makefile.in b/unix/Makefile.in index d13c490..1610962 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -321,8 +321,8 @@ TOMMATH_OBJS = bncore.o bn_reverse.o bn_fast_s_mp_mul_digs.o \ bn_mp_cmp.o bn_mp_cmp_d.o bn_mp_cmp_mag.o \ bn_mp_cnt_lsb.o bn_mp_copy.o \ bn_mp_count_bits.o bn_mp_div.o bn_mp_div_d.o bn_mp_div_2.o \ - bn_mp_div_2d.o bn_mp_div_3.o bn_mp_exch.o \ - bn_mp_expt_d.o bn_mp_expt_d_ex.o bn_mp_grow.o bn_mp_init.o \ + bn_mp_div_2d.o bn_mp_div_3.o bn_mp_exch.o bn_mp_expt_d.o \ + bn_mp_expt_d_ex.o bn_mp_get_bit.o bn_mp_grow.o bn_mp_init.o \ bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o \ bn_mp_init_set_int.o bn_mp_init_size.o bn_mp_karatsuba_mul.o \ bn_mp_karatsuba_sqr.o \ @@ -330,7 +330,7 @@ TOMMATH_OBJS = bncore.o bn_reverse.o bn_fast_s_mp_mul_digs.o \ bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_neg.o bn_mp_or.o \ bn_mp_radix_size.o bn_mp_radix_smap.o \ bn_mp_read_radix.o bn_mp_rshd.o bn_mp_set.o bn_mp_set_int.o \ - bn_mp_shrink.o \ + bn_mp_set_long.o bn_mp_shrink.o \ bn_mp_sqr.o bn_mp_sqrt.o bn_mp_sub.o bn_mp_sub_d.o \ bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o \ bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_toradix_n.o \ @@ -506,6 +506,7 @@ TOMMATH_SRCS = \ $(TOMMATH_DIR)/bn_mp_exch.c \ $(TOMMATH_DIR)/bn_mp_expt_d.c \ $(TOMMATH_DIR)/bn_mp_expt_d_ex.c \ + $(TOMMATH_DIR)/bn_mp_get_bit.c \ $(TOMMATH_DIR)/bn_mp_grow.c \ $(TOMMATH_DIR)/bn_mp_init.c \ $(TOMMATH_DIR)/bn_mp_init_copy.c \ @@ -530,6 +531,7 @@ TOMMATH_SRCS = \ $(TOMMATH_DIR)/bn_mp_rshd.c \ $(TOMMATH_DIR)/bn_mp_set.c \ $(TOMMATH_DIR)/bn_mp_set_int.c \ + $(TOMMATH_DIR)/bn_mp_set_long.c \ $(TOMMATH_DIR)/bn_mp_shrink.c \ $(TOMMATH_DIR)/bn_mp_sqr.c \ $(TOMMATH_DIR)/bn_mp_sqrt.c \ @@ -1426,6 +1428,9 @@ bn_mp_expt_d.o: $(TOMMATH_DIR)/bn_mp_expt_d.c $(MATHHDRS) bn_mp_expt_d_ex.o: $(TOMMATH_DIR)/bn_mp_expt_d_ex.c $(MATHHDRS) $(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_expt_d_ex.c +bn_mp_get_bit.o: $(TOMMATH_DIR)/bn_mp_get_bit.c $(MATHHDRS) + $(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_get_bit.c + bn_mp_grow.o: $(TOMMATH_DIR)/bn_mp_grow.c $(MATHHDRS) $(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_grow.c @@ -1498,6 +1503,9 @@ bn_mp_set.o: $(TOMMATH_DIR)/bn_mp_set.c $(MATHHDRS) bn_mp_set_int.o: $(TOMMATH_DIR)/bn_mp_set_int.c $(MATHHDRS) $(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_set_int.c +bn_mp_set_long.o: $(TOMMATH_DIR)/bn_mp_set_long.c $(MATHHDRS) + $(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_set_long.c + bn_mp_shrink.o: $(TOMMATH_DIR)/bn_mp_shrink.c $(MATHHDRS) $(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_shrink.c diff --git a/win/Makefile.in b/win/Makefile.in index e6b9801..b983f0a 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -335,6 +335,7 @@ TOMMATH_OBJS = \ bn_mp_exch.${OBJEXT} \ bn_mp_expt_d.${OBJEXT} \ bn_mp_expt_d_ex.${OBJEXT} \ + bn_mp_get_bit.${OBJEXT} \ bn_mp_grow.${OBJEXT} \ bn_mp_init.${OBJEXT} \ bn_mp_init_copy.${OBJEXT} \ @@ -359,6 +360,7 @@ TOMMATH_OBJS = \ bn_mp_rshd.${OBJEXT} \ bn_mp_set.${OBJEXT} \ bn_mp_set_int.${OBJEXT} \ + bn_mp_set_long.${OBJEXT} \ bn_mp_shrink.${OBJEXT} \ bn_mp_sqr.${OBJEXT} \ bn_mp_sqrt.${OBJEXT} \ diff --git a/win/makefile.vc b/win/makefile.vc index 647ba89..adfd7c4 100644 --- a/win/makefile.vc +++ b/win/makefile.vc @@ -275,6 +275,7 @@ TOMMATHOBJS = \ $(TMP_DIR)\bn_mp_exch.obj \ $(TMP_DIR)\bn_mp_expt_d.obj \ $(TMP_DIR)\bn_mp_expt_d_ex.obj \ + $(TMP_DIR)\bn_mp_get_bit.obj \ $(TMP_DIR)\bn_mp_grow.obj \ $(TMP_DIR)\bn_mp_init.obj \ $(TMP_DIR)\bn_mp_init_copy.obj \ @@ -299,6 +300,7 @@ TOMMATHOBJS = \ $(TMP_DIR)\bn_mp_rshd.obj \ $(TMP_DIR)\bn_mp_set.obj \ $(TMP_DIR)\bn_mp_set_int.obj \ + $(TMP_DIR)\bn_mp_set_long.obj \ $(TMP_DIR)\bn_mp_shrink.obj \ $(TMP_DIR)\bn_mp_sqr.obj \ $(TMP_DIR)\bn_mp_sqrt.obj \ -- cgit v0.12 From 2d46cfab690b3d6ea12bbc68c1756f9c8d62d4f8 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Tue, 26 Mar 2019 16:22:22 +0000 Subject: Additional protection for ridiculously big exponents, in case libtommath is compiled with DIGIT_BIT=60 in stead of 28. --- generic/tclExecute.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 903e8d7..618ba83 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -8400,7 +8400,7 @@ ExecuteExtendedBinaryMathOp( overflowExpon: Tcl_TakeBignumFromObj(NULL, value2Ptr, &big2); - if (big2.used > 1) { + if ((big2.used > 1) || (big2.used == 1 && big2.dp[0] > (1<<28))) { mp_clear(&big2); Tcl_SetObjResult(interp, Tcl_NewStringObj( "exponent too large", -1)); -- cgit v0.12 From 9eb32ba719b38f3e5efbb79dddcd22c42d241693 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Ignacio=20Mar=C3=ADn?= Date: Tue, 26 Mar 2019 22:23:23 +0000 Subject: Update TZ info to tzdata2019a. --- library/tzdata/America/Metlakatla | 3 ++- library/tzdata/Asia/Gaza | 52 +++++++++++++++++++++------------------ library/tzdata/Asia/Hebron | 52 +++++++++++++++++++++------------------ library/tzdata/Asia/Jerusalem | 4 +++ library/tzdata/Etc/UCT | 6 ++--- library/tzdata/UCT | 6 ++--- 6 files changed, 68 insertions(+), 55 deletions(-) diff --git a/library/tzdata/America/Metlakatla b/library/tzdata/America/Metlakatla index 3636725..a0385d0 100644 --- a/library/tzdata/America/Metlakatla +++ b/library/tzdata/America/Metlakatla @@ -47,7 +47,8 @@ set TZData(:America/Metlakatla) { {1509876000 -32400 0 AKST} {1520766000 -28800 1 AKDT} {1541329200 -28800 0 PST} - {1552215600 -28800 0 AKDT} + {1547978400 -32400 0 AKST} + {1552215600 -28800 1 AKDT} {1572775200 -32400 0 AKST} {1583665200 -28800 1 AKDT} {1604224800 -32400 0 AKST} diff --git a/library/tzdata/Asia/Gaza b/library/tzdata/Asia/Gaza index 85b9f67..6d0f144 100644 --- a/library/tzdata/Asia/Gaza +++ b/library/tzdata/Asia/Gaza @@ -40,6 +40,10 @@ set TZData(:Asia/Gaza) { {150843600 7200 0 IST} {167176800 10800 1 IDT} {178664400 7200 0 IST} + {334015200 10800 1 IDT} + {337644000 7200 0 IST} + {452556000 10800 1 IDT} + {462232800 7200 0 IST} {482277600 10800 1 IDT} {495579600 7200 0 IST} {516751200 10800 1 IDT} @@ -113,7 +117,7 @@ set TZData(:Asia/Gaza) { {1509141600 7200 0 EET} {1521846000 10800 1 EEST} {1540591200 7200 0 EET} - {1553295600 10800 1 EEST} + {1553900400 10800 1 EEST} {1572040800 7200 0 EET} {1585350000 10800 1 EEST} {1604095200 7200 0 EET} @@ -123,9 +127,9 @@ set TZData(:Asia/Gaza) { {1666994400 7200 0 EET} {1679698800 10800 1 EEST} {1698444000 7200 0 EET} - {1711148400 10800 1 EEST} + {1711753200 10800 1 EEST} {1729893600 7200 0 EET} - {1742598000 10800 1 EEST} + {1743202800 10800 1 EEST} {1761343200 7200 0 EET} {1774652400 10800 1 EEST} {1793397600 7200 0 EET} @@ -135,9 +139,9 @@ set TZData(:Asia/Gaza) { {1856296800 7200 0 EET} {1869001200 10800 1 EEST} {1887746400 7200 0 EET} - {1900450800 10800 1 EEST} + {1901055600 10800 1 EEST} {1919196000 7200 0 EET} - {1931900400 10800 1 EEST} + {1932505200 10800 1 EEST} {1950645600 7200 0 EET} {1963954800 10800 1 EEST} {1982700000 7200 0 EET} @@ -147,7 +151,7 @@ set TZData(:Asia/Gaza) { {2045599200 7200 0 EET} {2058303600 10800 1 EEST} {2077048800 7200 0 EET} - {2089753200 10800 1 EEST} + {2090358000 10800 1 EEST} {2108498400 7200 0 EET} {2121807600 10800 1 EEST} {2140552800 7200 0 EET} @@ -157,9 +161,9 @@ set TZData(:Asia/Gaza) { {2203452000 7200 0 EET} {2216156400 10800 1 EEST} {2234901600 7200 0 EET} - {2247606000 10800 1 EEST} + {2248210800 10800 1 EEST} {2266351200 7200 0 EET} - {2279055600 10800 1 EEST} + {2279660400 10800 1 EEST} {2297800800 7200 0 EET} {2311110000 10800 1 EEST} {2329855200 7200 0 EET} @@ -169,7 +173,7 @@ set TZData(:Asia/Gaza) { {2392754400 7200 0 EET} {2405458800 10800 1 EEST} {2424204000 7200 0 EET} - {2436908400 10800 1 EEST} + {2437513200 10800 1 EEST} {2455653600 7200 0 EET} {2468962800 10800 1 EEST} {2487708000 7200 0 EET} @@ -179,9 +183,9 @@ set TZData(:Asia/Gaza) { {2550607200 7200 0 EET} {2563311600 10800 1 EEST} {2582056800 7200 0 EET} - {2594761200 10800 1 EEST} + {2595366000 10800 1 EEST} {2613506400 7200 0 EET} - {2626210800 10800 1 EEST} + {2626815600 10800 1 EEST} {2644956000 7200 0 EET} {2658265200 10800 1 EEST} {2677010400 7200 0 EET} @@ -191,9 +195,9 @@ set TZData(:Asia/Gaza) { {2739909600 7200 0 EET} {2752614000 10800 1 EEST} {2771359200 7200 0 EET} - {2784063600 10800 1 EEST} + {2784668400 10800 1 EEST} {2802808800 7200 0 EET} - {2815513200 10800 1 EEST} + {2816118000 10800 1 EEST} {2834258400 7200 0 EET} {2847567600 10800 1 EEST} {2866312800 7200 0 EET} @@ -203,7 +207,7 @@ set TZData(:Asia/Gaza) { {2929212000 7200 0 EET} {2941916400 10800 1 EEST} {2960661600 7200 0 EET} - {2973366000 10800 1 EEST} + {2973970800 10800 1 EEST} {2992111200 7200 0 EET} {3005420400 10800 1 EEST} {3024165600 7200 0 EET} @@ -213,9 +217,9 @@ set TZData(:Asia/Gaza) { {3087064800 7200 0 EET} {3099769200 10800 1 EEST} {3118514400 7200 0 EET} - {3131218800 10800 1 EEST} + {3131823600 10800 1 EEST} {3149964000 7200 0 EET} - {3162668400 10800 1 EEST} + {3163273200 10800 1 EEST} {3181413600 7200 0 EET} {3194722800 10800 1 EEST} {3213468000 7200 0 EET} @@ -225,7 +229,7 @@ set TZData(:Asia/Gaza) { {3276367200 7200 0 EET} {3289071600 10800 1 EEST} {3307816800 7200 0 EET} - {3320521200 10800 1 EEST} + {3321126000 10800 1 EEST} {3339266400 7200 0 EET} {3352575600 10800 1 EEST} {3371320800 7200 0 EET} @@ -235,9 +239,9 @@ set TZData(:Asia/Gaza) { {3434220000 7200 0 EET} {3446924400 10800 1 EEST} {3465669600 7200 0 EET} - {3478374000 10800 1 EEST} + {3478978800 10800 1 EEST} {3497119200 7200 0 EET} - {3509823600 10800 1 EEST} + {3510428400 10800 1 EEST} {3528568800 7200 0 EET} {3541878000 10800 1 EEST} {3560623200 7200 0 EET} @@ -247,9 +251,9 @@ set TZData(:Asia/Gaza) { {3623522400 7200 0 EET} {3636226800 10800 1 EEST} {3654972000 7200 0 EET} - {3667676400 10800 1 EEST} + {3668281200 10800 1 EEST} {3686421600 7200 0 EET} - {3699126000 10800 1 EEST} + {3699730800 10800 1 EEST} {3717871200 7200 0 EET} {3731180400 10800 1 EEST} {3749925600 7200 0 EET} @@ -259,7 +263,7 @@ set TZData(:Asia/Gaza) { {3812824800 7200 0 EET} {3825529200 10800 1 EEST} {3844274400 7200 0 EET} - {3856978800 10800 1 EEST} + {3857583600 10800 1 EEST} {3875724000 7200 0 EET} {3889033200 10800 1 EEST} {3907778400 7200 0 EET} @@ -269,9 +273,9 @@ set TZData(:Asia/Gaza) { {3970677600 7200 0 EET} {3983382000 10800 1 EEST} {4002127200 7200 0 EET} - {4014831600 10800 1 EEST} + {4015436400 10800 1 EEST} {4033576800 7200 0 EET} - {4046281200 10800 1 EEST} + {4046886000 10800 1 EEST} {4065026400 7200 0 EET} {4078335600 10800 1 EEST} {4097080800 7200 0 EET} diff --git a/library/tzdata/Asia/Hebron b/library/tzdata/Asia/Hebron index c0f5447..9249910 100644 --- a/library/tzdata/Asia/Hebron +++ b/library/tzdata/Asia/Hebron @@ -40,6 +40,10 @@ set TZData(:Asia/Hebron) { {150843600 7200 0 IST} {167176800 10800 1 IDT} {178664400 7200 0 IST} + {334015200 10800 1 IDT} + {337644000 7200 0 IST} + {452556000 10800 1 IDT} + {462232800 7200 0 IST} {482277600 10800 1 IDT} {495579600 7200 0 IST} {516751200 10800 1 IDT} @@ -112,7 +116,7 @@ set TZData(:Asia/Hebron) { {1509141600 7200 0 EET} {1521846000 10800 1 EEST} {1540591200 7200 0 EET} - {1553295600 10800 1 EEST} + {1553900400 10800 1 EEST} {1572040800 7200 0 EET} {1585350000 10800 1 EEST} {1604095200 7200 0 EET} @@ -122,9 +126,9 @@ set TZData(:Asia/Hebron) { {1666994400 7200 0 EET} {1679698800 10800 1 EEST} {1698444000 7200 0 EET} - {1711148400 10800 1 EEST} + {1711753200 10800 1 EEST} {1729893600 7200 0 EET} - {1742598000 10800 1 EEST} + {1743202800 10800 1 EEST} {1761343200 7200 0 EET} {1774652400 10800 1 EEST} {1793397600 7200 0 EET} @@ -134,9 +138,9 @@ set TZData(:Asia/Hebron) { {1856296800 7200 0 EET} {1869001200 10800 1 EEST} {1887746400 7200 0 EET} - {1900450800 10800 1 EEST} + {1901055600 10800 1 EEST} {1919196000 7200 0 EET} - {1931900400 10800 1 EEST} + {1932505200 10800 1 EEST} {1950645600 7200 0 EET} {1963954800 10800 1 EEST} {1982700000 7200 0 EET} @@ -146,7 +150,7 @@ set TZData(:Asia/Hebron) { {2045599200 7200 0 EET} {2058303600 10800 1 EEST} {2077048800 7200 0 EET} - {2089753200 10800 1 EEST} + {2090358000 10800 1 EEST} {2108498400 7200 0 EET} {2121807600 10800 1 EEST} {2140552800 7200 0 EET} @@ -156,9 +160,9 @@ set TZData(:Asia/Hebron) { {2203452000 7200 0 EET} {2216156400 10800 1 EEST} {2234901600 7200 0 EET} - {2247606000 10800 1 EEST} + {2248210800 10800 1 EEST} {2266351200 7200 0 EET} - {2279055600 10800 1 EEST} + {2279660400 10800 1 EEST} {2297800800 7200 0 EET} {2311110000 10800 1 EEST} {2329855200 7200 0 EET} @@ -168,7 +172,7 @@ set TZData(:Asia/Hebron) { {2392754400 7200 0 EET} {2405458800 10800 1 EEST} {2424204000 7200 0 EET} - {2436908400 10800 1 EEST} + {2437513200 10800 1 EEST} {2455653600 7200 0 EET} {2468962800 10800 1 EEST} {2487708000 7200 0 EET} @@ -178,9 +182,9 @@ set TZData(:Asia/Hebron) { {2550607200 7200 0 EET} {2563311600 10800 1 EEST} {2582056800 7200 0 EET} - {2594761200 10800 1 EEST} + {2595366000 10800 1 EEST} {2613506400 7200 0 EET} - {2626210800 10800 1 EEST} + {2626815600 10800 1 EEST} {2644956000 7200 0 EET} {2658265200 10800 1 EEST} {2677010400 7200 0 EET} @@ -190,9 +194,9 @@ set TZData(:Asia/Hebron) { {2739909600 7200 0 EET} {2752614000 10800 1 EEST} {2771359200 7200 0 EET} - {2784063600 10800 1 EEST} + {2784668400 10800 1 EEST} {2802808800 7200 0 EET} - {2815513200 10800 1 EEST} + {2816118000 10800 1 EEST} {2834258400 7200 0 EET} {2847567600 10800 1 EEST} {2866312800 7200 0 EET} @@ -202,7 +206,7 @@ set TZData(:Asia/Hebron) { {2929212000 7200 0 EET} {2941916400 10800 1 EEST} {2960661600 7200 0 EET} - {2973366000 10800 1 EEST} + {2973970800 10800 1 EEST} {2992111200 7200 0 EET} {3005420400 10800 1 EEST} {3024165600 7200 0 EET} @@ -212,9 +216,9 @@ set TZData(:Asia/Hebron) { {3087064800 7200 0 EET} {3099769200 10800 1 EEST} {3118514400 7200 0 EET} - {3131218800 10800 1 EEST} + {3131823600 10800 1 EEST} {3149964000 7200 0 EET} - {3162668400 10800 1 EEST} + {3163273200 10800 1 EEST} {3181413600 7200 0 EET} {3194722800 10800 1 EEST} {3213468000 7200 0 EET} @@ -224,7 +228,7 @@ set TZData(:Asia/Hebron) { {3276367200 7200 0 EET} {3289071600 10800 1 EEST} {3307816800 7200 0 EET} - {3320521200 10800 1 EEST} + {3321126000 10800 1 EEST} {3339266400 7200 0 EET} {3352575600 10800 1 EEST} {3371320800 7200 0 EET} @@ -234,9 +238,9 @@ set TZData(:Asia/Hebron) { {3434220000 7200 0 EET} {3446924400 10800 1 EEST} {3465669600 7200 0 EET} - {3478374000 10800 1 EEST} + {3478978800 10800 1 EEST} {3497119200 7200 0 EET} - {3509823600 10800 1 EEST} + {3510428400 10800 1 EEST} {3528568800 7200 0 EET} {3541878000 10800 1 EEST} {3560623200 7200 0 EET} @@ -246,9 +250,9 @@ set TZData(:Asia/Hebron) { {3623522400 7200 0 EET} {3636226800 10800 1 EEST} {3654972000 7200 0 EET} - {3667676400 10800 1 EEST} + {3668281200 10800 1 EEST} {3686421600 7200 0 EET} - {3699126000 10800 1 EEST} + {3699730800 10800 1 EEST} {3717871200 7200 0 EET} {3731180400 10800 1 EEST} {3749925600 7200 0 EET} @@ -258,7 +262,7 @@ set TZData(:Asia/Hebron) { {3812824800 7200 0 EET} {3825529200 10800 1 EEST} {3844274400 7200 0 EET} - {3856978800 10800 1 EEST} + {3857583600 10800 1 EEST} {3875724000 7200 0 EET} {3889033200 10800 1 EEST} {3907778400 7200 0 EET} @@ -268,9 +272,9 @@ set TZData(:Asia/Hebron) { {3970677600 7200 0 EET} {3983382000 10800 1 EEST} {4002127200 7200 0 EET} - {4014831600 10800 1 EEST} + {4015436400 10800 1 EEST} {4033576800 7200 0 EET} - {4046281200 10800 1 EEST} + {4046886000 10800 1 EEST} {4065026400 7200 0 EET} {4078335600 10800 1 EEST} {4097080800 7200 0 EET} diff --git a/library/tzdata/Asia/Jerusalem b/library/tzdata/Asia/Jerusalem index 2714963..e1e84f4 100644 --- a/library/tzdata/Asia/Jerusalem +++ b/library/tzdata/Asia/Jerusalem @@ -39,6 +39,10 @@ set TZData(:Asia/Jerusalem) { {150843600 7200 0 IST} {167176800 10800 1 IDT} {178664400 7200 0 IST} + {334015200 10800 1 IDT} + {337644000 7200 0 IST} + {452556000 10800 1 IDT} + {462232800 7200 0 IST} {482277600 10800 1 IDT} {495579600 7200 0 IST} {516751200 10800 1 IDT} diff --git a/library/tzdata/Etc/UCT b/library/tzdata/Etc/UCT index f7d795e..c843cdc 100644 --- a/library/tzdata/Etc/UCT +++ b/library/tzdata/Etc/UCT @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/UCT) { - {-9223372036854775808 0 0 UCT} +if {![info exists TZData(Etc/UTC)]} { + LoadTimeZoneFile Etc/UTC } +set TZData(:Etc/UCT) $TZData(:Etc/UTC) diff --git a/library/tzdata/UCT b/library/tzdata/UCT index 8449328..acfa48e 100644 --- a/library/tzdata/UCT +++ b/library/tzdata/UCT @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/UCT)]} { - LoadTimeZoneFile Etc/UCT +if {![info exists TZData(Etc/UTC)]} { + LoadTimeZoneFile Etc/UTC } -set TZData(:UCT) $TZData(:Etc/UCT) +set TZData(:UCT) $TZData(:Etc/UTC) -- cgit v0.12 From 9535d1ecdc9355cff86a0335a55d50a5da242457 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Wed, 27 Mar 2019 20:05:26 +0000 Subject: Document maximum value for right argument of '**' operator. Adapt test-cases to test for exactly one more than this maximum value. Make sure that the maximum is the same for DIGIT_BIT > 28. Change macro's for mp_iseven()/mp_isodd() so they don't depend on value of DIGIT_BIT any more. --- .fossil-settings/ignore-glob | 2 ++ doc/expr.n | 3 ++- doc/mathop.n | 9 +++++---- generic/tclExecute.c | 6 +++++- generic/tclTomMath.h | 4 ++-- libtommath/astylerc | 27 +++++++++++++++++++++++++++ libtommath/tommath.h | 4 ++-- tests/expr.test | 42 +++++++++++++++++++++--------------------- 8 files changed, 66 insertions(+), 31 deletions(-) create mode 100644 libtommath/astylerc diff --git a/.fossil-settings/ignore-glob b/.fossil-settings/ignore-glob index c85b488..99fd07e 100644 --- a/.fossil-settings/ignore-glob +++ b/.fossil-settings/ignore-glob @@ -24,9 +24,11 @@ libtommath/bn.ilg libtommath/bn.ind libtommath/pretty.build libtommath/tommath.src +libtommath/*.log libtommath/*.pdf libtommath/*.pl libtommath/*.sh +libtommath/doc/* libtommath/tombc/* libtommath/pre_gen/* libtommath/pics/* diff --git a/doc/expr.n b/doc/expr.n index b76b6a2..2a0af7e 100644 --- a/doc/expr.n +++ b/doc/expr.n @@ -126,7 +126,8 @@ applied only to integers. .TP 20 \fB**\fR . -Exponentiation. Valid for any numeric operands. +Exponentiation. Valid for any numeric operands. The maximum exponent value +that Tcl can handle if the first number is an integer > 1 is 268435455. .TP 20 \fB*\0\0/\0\0%\fR . diff --git a/doc/mathop.n b/doc/mathop.n index 4c16d76..84cf308 100644 --- a/doc/mathop.n +++ b/doc/mathop.n @@ -151,10 +151,11 @@ is the same as .QW "\fB** 2 [** 3 4]\fR" . Each \fInumber\fR may be any numeric value, though the second number must not be fractional if the -first is negative. If no arguments are given, the result will be one, and if -only one argument is given, the result will be that argument. The -result will have an integral value only when all arguments are -integral values. +first is negative. The maximum exponent value that Tcl can handle if the +first number is an integer > 1 is 268435455. If no arguments are given, +the result will be one, and if only one argument is given, the result will +be that argument. The result will have an integral value only when all +arguments are integral values. .SS "COMPARISON OPERATORS" .PP The behaviors of the comparison operator commands (most of which operate diff --git a/generic/tclExecute.c b/generic/tclExecute.c index ca14a55..112924a 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -9076,7 +9076,11 @@ ExecuteExtendedBinaryMathOp( overflowExpon: Tcl_TakeBignumFromObj(NULL, value2Ptr, &big2); - if (big2.used > 1) { + if ((big2.used > 1) +#if DIGIT_BIT > 28 + || ((big2.used == 1) && (big2.dp[0] >= (1<<28))) +#endif + ) { mp_clear(&big2); Tcl_SetObjResult(interp, Tcl_NewStringObj( "exponent too large", -1)); diff --git a/generic/tclTomMath.h b/generic/tclTomMath.h index fbf0d35..0541ad8 100644 --- a/generic/tclTomMath.h +++ b/generic/tclTomMath.h @@ -229,8 +229,8 @@ int mp_init_size(mp_int *a, int size); /* ---> Basic Manipulations <--- */ #define mp_iszero(a) (((a)->used == 0) ? MP_YES : MP_NO) -#define mp_iseven(a) ((((a)->used == 0) || (((a)->dp[0] & 1u) == 0u)) ? MP_YES : MP_NO) -#define mp_isodd(a) ((((a)->used > 0) && (((a)->dp[0] & 1u) == 1u)) ? MP_YES : MP_NO) +#define mp_iseven(a) (!mp_get_bit((a),0)) +#define mp_isodd(a) mp_get_bit((a),0) #define mp_isneg(a) (((a)->sign != MP_ZPOS) ? MP_YES : MP_NO) /* set to zero */ diff --git a/libtommath/astylerc b/libtommath/astylerc new file mode 100644 index 0000000..5d63f7a --- /dev/null +++ b/libtommath/astylerc @@ -0,0 +1,27 @@ +# Artistic Style, see http://astyle.sourceforge.net/ +# full documentation, see: http://astyle.sourceforge.net/astyle.html +# +# usage: +# astyle --options=astylerc *.[ch] + +## Bracket Style Options +style=kr + +## Tab Options +indent=spaces=3 + +## Bracket Modify Options + +## Indentation Options +min-conditional-indent=0 + +## Padding Options +pad-header +unpad-paren +align-pointer=name + +## Formatting Options +break-after-logical +max-code-length=120 +convert-tabs +mode=c diff --git a/libtommath/tommath.h b/libtommath/tommath.h index c240d80..00c8b35 100644 --- a/libtommath/tommath.h +++ b/libtommath/tommath.h @@ -190,8 +190,8 @@ int mp_init_size(mp_int *a, int size); /* ---> Basic Manipulations <--- */ #define mp_iszero(a) (((a)->used == 0) ? MP_YES : MP_NO) -#define mp_iseven(a) ((((a)->used == 0) || (((a)->dp[0] & 1u) == 0u)) ? MP_YES : MP_NO) -#define mp_isodd(a) ((((a)->used > 0) && (((a)->dp[0] & 1u) == 1u)) ? MP_YES : MP_NO) +#define mp_iseven(a) (!mp_get_bit((a),0)) +#define mp_isodd(a) mp_get_bit((a),0) #define mp_isneg(a) (((a)->sign != MP_ZPOS) ? MP_YES : MP_NO) /* set to zero */ diff --git a/tests/expr.test b/tests/expr.test index a265ac6..6e6a358 100644 --- a/tests/expr.test +++ b/tests/expr.test @@ -1150,7 +1150,7 @@ test expr-23.54.11 {INST_EXPON: Bug 2798543} { expr {3**9 == 3**131081} } 0 test expr-23.54.12 {INST_EXPON: Bug 2798543} -body { - expr {3**9 == 3**268435465} + expr {3**268435456} } -returnCodes error -result {exponent too large} test expr-23.54.13 {INST_EXPON: Bug 2798543} { expr {(-3)**9 == (-3)**65545} @@ -1165,7 +1165,7 @@ test expr-23.55.2 {INST_EXPON: Bug 2798543} { expr {4**9 == 4**131081} } 0 test expr-23.55.3 {INST_EXPON: Bug 2798543} -body { - expr {4**9 == 4**268435465} + expr {4**268435456} } -returnCodes error -result {exponent too large} test expr-23.55.4 {INST_EXPON: Bug 2798543} { expr {(-4)**9 == (-4)**65545} @@ -1180,7 +1180,7 @@ test expr-23.56.2 {INST_EXPON: Bug 2798543} { expr {5**9 == 5**131081} } 0 test expr-23.56.3 {INST_EXPON: Bug 2798543} -body { - expr {5**9 == 5**268435465} + expr {5**268435456} } -returnCodes error -result {exponent too large} test expr-23.56.4 {INST_EXPON: Bug 2798543} { expr {(-5)**9 == (-5)**65545} @@ -1195,7 +1195,7 @@ test expr-23.57.2 {INST_EXPON: Bug 2798543} { expr {6**9 == 6**131081} } 0 test expr-23.57.3 {INST_EXPON: Bug 2798543} -body { - expr {6**9 == 6**268435465} + expr {6**268435456} } -returnCodes error -result {exponent too large} test expr-23.57.4 {INST_EXPON: Bug 2798543} { expr {(-6)**9 == (-6)**65545} @@ -1210,7 +1210,7 @@ test expr-23.58.2 {INST_EXPON: Bug 2798543} { expr {7**9 == 7**131081} } 0 test expr-23.58.3 {INST_EXPON: Bug 2798543} -body { - expr {7**9 == 7**268435465} + expr {7**268435456} } -returnCodes error -result {exponent too large} test expr-23.58.4 {INST_EXPON: Bug 2798543} { expr {(-7)**9 == (-7)**65545} @@ -1225,7 +1225,7 @@ test expr-23.59.2 {INST_EXPON: Bug 2798543} { expr {8**9 == 8**131081} } 0 test expr-23.59.3 {INST_EXPON: Bug 2798543} -body { - expr {8**9 == 8**268435465} + expr {8**268435456} } -returnCodes error -result {exponent too large} test expr-23.59.4 {INST_EXPON: Bug 2798543} { expr {(-8)**9 == (-8)**65545} @@ -1237,7 +1237,7 @@ test expr-23.60.1 {INST_EXPON: Bug 2798543} { expr {9**9 == 9**131081} } 0 test expr-23.60.2 {INST_EXPON: Bug 2798543} -body { - expr {9**9 == 9**268435465} + expr {9**268435456} } -returnCodes error -result {exponent too large} test expr-23.60.3 {INST_EXPON: Bug 2798543} { expr {(-9)**9 == (-9)**65545} @@ -1249,7 +1249,7 @@ test expr-23.61.1 {INST_EXPON: Bug 2798543} { expr {10**9 == 10**131081} } 0 test expr-23.61.2 {INST_EXPON: Bug 2798543} -body { - expr {10**9 == 10**268435465} + expr {10**268435456} } -returnCodes error -result {exponent too large} test expr-23.61.3 {INST_EXPON: Bug 2798543} { expr {(-10)**9 == (-10)**65545} @@ -1261,7 +1261,7 @@ test expr-23.62.1 {INST_EXPON: Bug 2798543} { expr {11**9 == 11**131081} } 0 test expr-23.62.2 {INST_EXPON: Bug 2798543} -body { - expr {11**9 == 11**268435465} + expr {11**268435456} } -returnCodes error -result {exponent too large} test expr-23.62.3 {INST_EXPON: Bug 2798543} { expr {(-11)**9 == (-11)**65545} @@ -1276,7 +1276,7 @@ test expr-23.63.2 {INST_EXPON: Bug 2798543} { expr {3**20 == 3**131092} } 0 test expr-23.63.3 {INST_EXPON: Bug 2798543} -body { - expr {3**20 == 3**268435476} + expr {3**268435456} } -returnCodes error -result {exponent too large} test expr-23.63.4 {INST_EXPON: Bug 2798543} { expr {(-3)**20 == (-3)**65556} @@ -1291,7 +1291,7 @@ test expr-23.64.2 {INST_EXPON: Bug 2798543} { expr {4**17 == 4**131089} } 0 test expr-23.64.3 {INST_EXPON: Bug 2798543} -body { - expr {4**17 == 4**268435473} + expr {4**268435456} } -returnCodes error -result {exponent too large} test expr-23.64.4 {INST_EXPON: Bug 2798543} { expr {(-4)**17 == (-4)**65553} @@ -1306,7 +1306,7 @@ test expr-23.65.2 {INST_EXPON: Bug 2798543} { expr {5**17 == 5**131089} } 0 test expr-23.65.3 {INST_EXPON: Bug 2798543} -body { - expr {5**17 == 5**268435473} + expr {5**268435456} } -returnCodes error -result {exponent too large} test expr-23.65.4 {INST_EXPON: Bug 2798543} { expr {(-5)**17 == (-5)**65553} @@ -1321,7 +1321,7 @@ test expr-23.66.2 {INST_EXPON: Bug 2798543} { expr {6**17 == 6**131089} } 0 test expr-23.66.3 {INST_EXPON: Bug 2798543} -body { - expr {6**17 == 6**268435473} + expr {6**268435456} } -returnCodes error -result {exponent too large} test expr-23.66.4 {INST_EXPON: Bug 2798543} { expr {(-6)**17 == (-6)**65553} @@ -1336,7 +1336,7 @@ test expr-23.67.2 {INST_EXPON: Bug 2798543} { expr {7**17 == 7**131089} } 0 test expr-23.67.3 {INST_EXPON: Bug 2798543} -body { - expr {7**17 == 7**268435473} + expr {7**268435456} } -returnCodes error -result {exponent too large} test expr-23.67.4 {INST_EXPON: Bug 2798543} { expr {(-7)**17 == (-7)**65553} @@ -1351,7 +1351,7 @@ test expr-23.68.2 {INST_EXPON: Bug 2798543} { expr {8**17 == 8**131089} } 0 test expr-23.68.3 {INST_EXPON: Bug 2798543} -body { - expr {8**17 == 8**268435473} + expr {8**268435456} } -returnCodes error -result {exponent too large} test expr-23.68.4 {INST_EXPON: Bug 2798543} { expr {(-8)**17 == (-8)**65553} @@ -1366,7 +1366,7 @@ test expr-23.69.2 {INST_EXPON: Bug 2798543} { expr {9**17 == 9**131089} } 0 test expr-23.69.3 {INST_EXPON: Bug 2798543} -body { - expr {9**17 == 9**268435473} + expr {9**268435456} } -returnCodes error -result {exponent too large} test expr-23.69.4 {INST_EXPON: Bug 2798543} { expr {(-9)**17 == (-9)**65553} @@ -1381,7 +1381,7 @@ test expr-23.70.2 {INST_EXPON: Bug 2798543} { expr {10**17 == 10**131089} } 0 test expr-23.70.3 {INST_EXPON: Bug 2798543} -body { - expr {10**17 == 10**268435473} + expr {10**268435456} } -returnCodes error -result {exponent too large} test expr-23.70.4 {INST_EXPON: Bug 2798543} { expr {(-10)**17 == (-10)**65553} @@ -1396,7 +1396,7 @@ test expr-23.71.2 {INST_EXPON: Bug 2798543} { expr {11**17 == 11**131089} } 0 test expr-23.71.3 {INST_EXPON: Bug 2798543} -body { - expr {11**17 == 11**268435473} + expr {11**268435456} } -returnCodes error -result {exponent too large} test expr-23.71.4 {INST_EXPON: Bug 2798543} { expr {(-11)**17 == (-11)**65553} @@ -1408,7 +1408,7 @@ test expr-23.72.1 {INST_EXPON: Bug 2798543} { expr {12**17 == 12**131089} } 0 test expr-23.72.2 {INST_EXPON: Bug 2798543} -body { - expr {12**17 == 12**268435473} + expr {12**268435456} } -returnCodes error -result {exponent too large} test expr-23.72.3 {INST_EXPON: Bug 2798543} { expr {(-12)**17 == (-12)**65553} @@ -1420,7 +1420,7 @@ test expr-23.73.1 {INST_EXPON: Bug 2798543} { expr {13**17 == 13**131089} } 0 test expr-23.73.2 {INST_EXPON: Bug 2798543} -body { - expr {13**17 == 13**268435473} + expr {13**268435456} } -returnCodes error -result {exponent too large} test expr-23.73.3 {INST_EXPON: Bug 2798543} { expr {(-13)**17 == (-13)**65553} @@ -1432,7 +1432,7 @@ test expr-23.74.1 {INST_EXPON: Bug 2798543} { expr {14**17 == 14**131089} } 0 test expr-23.74.2 {INST_EXPON: Bug 2798543} -body { - expr {14**17 == 14**268435473} + expr {14**268435456} } -returnCodes error -result {exponent too large} test expr-23.74.3 {INST_EXPON: Bug 2798543} { expr {(-14)**17 == (-14)**65553} -- cgit v0.12 From 230de714e75660754b6c430308c98987aeb1c234 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Wed, 27 Mar 2019 20:13:25 +0000 Subject: Update TZ info to tzdata2019a --- library/tzdata/America/Metlakatla | 3 ++- library/tzdata/Asia/Gaza | 52 +++++++++++++++++++++------------------ library/tzdata/Asia/Hebron | 52 +++++++++++++++++++++------------------ library/tzdata/Asia/Jerusalem | 4 +++ library/tzdata/Etc/UCT | 6 ++--- library/tzdata/UCT | 6 ++--- 6 files changed, 68 insertions(+), 55 deletions(-) diff --git a/library/tzdata/America/Metlakatla b/library/tzdata/America/Metlakatla index 3636725..a0385d0 100644 --- a/library/tzdata/America/Metlakatla +++ b/library/tzdata/America/Metlakatla @@ -47,7 +47,8 @@ set TZData(:America/Metlakatla) { {1509876000 -32400 0 AKST} {1520766000 -28800 1 AKDT} {1541329200 -28800 0 PST} - {1552215600 -28800 0 AKDT} + {1547978400 -32400 0 AKST} + {1552215600 -28800 1 AKDT} {1572775200 -32400 0 AKST} {1583665200 -28800 1 AKDT} {1604224800 -32400 0 AKST} diff --git a/library/tzdata/Asia/Gaza b/library/tzdata/Asia/Gaza index 85b9f67..6d0f144 100644 --- a/library/tzdata/Asia/Gaza +++ b/library/tzdata/Asia/Gaza @@ -40,6 +40,10 @@ set TZData(:Asia/Gaza) { {150843600 7200 0 IST} {167176800 10800 1 IDT} {178664400 7200 0 IST} + {334015200 10800 1 IDT} + {337644000 7200 0 IST} + {452556000 10800 1 IDT} + {462232800 7200 0 IST} {482277600 10800 1 IDT} {495579600 7200 0 IST} {516751200 10800 1 IDT} @@ -113,7 +117,7 @@ set TZData(:Asia/Gaza) { {1509141600 7200 0 EET} {1521846000 10800 1 EEST} {1540591200 7200 0 EET} - {1553295600 10800 1 EEST} + {1553900400 10800 1 EEST} {1572040800 7200 0 EET} {1585350000 10800 1 EEST} {1604095200 7200 0 EET} @@ -123,9 +127,9 @@ set TZData(:Asia/Gaza) { {1666994400 7200 0 EET} {1679698800 10800 1 EEST} {1698444000 7200 0 EET} - {1711148400 10800 1 EEST} + {1711753200 10800 1 EEST} {1729893600 7200 0 EET} - {1742598000 10800 1 EEST} + {1743202800 10800 1 EEST} {1761343200 7200 0 EET} {1774652400 10800 1 EEST} {1793397600 7200 0 EET} @@ -135,9 +139,9 @@ set TZData(:Asia/Gaza) { {1856296800 7200 0 EET} {1869001200 10800 1 EEST} {1887746400 7200 0 EET} - {1900450800 10800 1 EEST} + {1901055600 10800 1 EEST} {1919196000 7200 0 EET} - {1931900400 10800 1 EEST} + {1932505200 10800 1 EEST} {1950645600 7200 0 EET} {1963954800 10800 1 EEST} {1982700000 7200 0 EET} @@ -147,7 +151,7 @@ set TZData(:Asia/Gaza) { {2045599200 7200 0 EET} {2058303600 10800 1 EEST} {2077048800 7200 0 EET} - {2089753200 10800 1 EEST} + {2090358000 10800 1 EEST} {2108498400 7200 0 EET} {2121807600 10800 1 EEST} {2140552800 7200 0 EET} @@ -157,9 +161,9 @@ set TZData(:Asia/Gaza) { {2203452000 7200 0 EET} {2216156400 10800 1 EEST} {2234901600 7200 0 EET} - {2247606000 10800 1 EEST} + {2248210800 10800 1 EEST} {2266351200 7200 0 EET} - {2279055600 10800 1 EEST} + {2279660400 10800 1 EEST} {2297800800 7200 0 EET} {2311110000 10800 1 EEST} {2329855200 7200 0 EET} @@ -169,7 +173,7 @@ set TZData(:Asia/Gaza) { {2392754400 7200 0 EET} {2405458800 10800 1 EEST} {2424204000 7200 0 EET} - {2436908400 10800 1 EEST} + {2437513200 10800 1 EEST} {2455653600 7200 0 EET} {2468962800 10800 1 EEST} {2487708000 7200 0 EET} @@ -179,9 +183,9 @@ set TZData(:Asia/Gaza) { {2550607200 7200 0 EET} {2563311600 10800 1 EEST} {2582056800 7200 0 EET} - {2594761200 10800 1 EEST} + {2595366000 10800 1 EEST} {2613506400 7200 0 EET} - {2626210800 10800 1 EEST} + {2626815600 10800 1 EEST} {2644956000 7200 0 EET} {2658265200 10800 1 EEST} {2677010400 7200 0 EET} @@ -191,9 +195,9 @@ set TZData(:Asia/Gaza) { {2739909600 7200 0 EET} {2752614000 10800 1 EEST} {2771359200 7200 0 EET} - {2784063600 10800 1 EEST} + {2784668400 10800 1 EEST} {2802808800 7200 0 EET} - {2815513200 10800 1 EEST} + {2816118000 10800 1 EEST} {2834258400 7200 0 EET} {2847567600 10800 1 EEST} {2866312800 7200 0 EET} @@ -203,7 +207,7 @@ set TZData(:Asia/Gaza) { {2929212000 7200 0 EET} {2941916400 10800 1 EEST} {2960661600 7200 0 EET} - {2973366000 10800 1 EEST} + {2973970800 10800 1 EEST} {2992111200 7200 0 EET} {3005420400 10800 1 EEST} {3024165600 7200 0 EET} @@ -213,9 +217,9 @@ set TZData(:Asia/Gaza) { {3087064800 7200 0 EET} {3099769200 10800 1 EEST} {3118514400 7200 0 EET} - {3131218800 10800 1 EEST} + {3131823600 10800 1 EEST} {3149964000 7200 0 EET} - {3162668400 10800 1 EEST} + {3163273200 10800 1 EEST} {3181413600 7200 0 EET} {3194722800 10800 1 EEST} {3213468000 7200 0 EET} @@ -225,7 +229,7 @@ set TZData(:Asia/Gaza) { {3276367200 7200 0 EET} {3289071600 10800 1 EEST} {3307816800 7200 0 EET} - {3320521200 10800 1 EEST} + {3321126000 10800 1 EEST} {3339266400 7200 0 EET} {3352575600 10800 1 EEST} {3371320800 7200 0 EET} @@ -235,9 +239,9 @@ set TZData(:Asia/Gaza) { {3434220000 7200 0 EET} {3446924400 10800 1 EEST} {3465669600 7200 0 EET} - {3478374000 10800 1 EEST} + {3478978800 10800 1 EEST} {3497119200 7200 0 EET} - {3509823600 10800 1 EEST} + {3510428400 10800 1 EEST} {3528568800 7200 0 EET} {3541878000 10800 1 EEST} {3560623200 7200 0 EET} @@ -247,9 +251,9 @@ set TZData(:Asia/Gaza) { {3623522400 7200 0 EET} {3636226800 10800 1 EEST} {3654972000 7200 0 EET} - {3667676400 10800 1 EEST} + {3668281200 10800 1 EEST} {3686421600 7200 0 EET} - {3699126000 10800 1 EEST} + {3699730800 10800 1 EEST} {3717871200 7200 0 EET} {3731180400 10800 1 EEST} {3749925600 7200 0 EET} @@ -259,7 +263,7 @@ set TZData(:Asia/Gaza) { {3812824800 7200 0 EET} {3825529200 10800 1 EEST} {3844274400 7200 0 EET} - {3856978800 10800 1 EEST} + {3857583600 10800 1 EEST} {3875724000 7200 0 EET} {3889033200 10800 1 EEST} {3907778400 7200 0 EET} @@ -269,9 +273,9 @@ set TZData(:Asia/Gaza) { {3970677600 7200 0 EET} {3983382000 10800 1 EEST} {4002127200 7200 0 EET} - {4014831600 10800 1 EEST} + {4015436400 10800 1 EEST} {4033576800 7200 0 EET} - {4046281200 10800 1 EEST} + {4046886000 10800 1 EEST} {4065026400 7200 0 EET} {4078335600 10800 1 EEST} {4097080800 7200 0 EET} diff --git a/library/tzdata/Asia/Hebron b/library/tzdata/Asia/Hebron index c0f5447..9249910 100644 --- a/library/tzdata/Asia/Hebron +++ b/library/tzdata/Asia/Hebron @@ -40,6 +40,10 @@ set TZData(:Asia/Hebron) { {150843600 7200 0 IST} {167176800 10800 1 IDT} {178664400 7200 0 IST} + {334015200 10800 1 IDT} + {337644000 7200 0 IST} + {452556000 10800 1 IDT} + {462232800 7200 0 IST} {482277600 10800 1 IDT} {495579600 7200 0 IST} {516751200 10800 1 IDT} @@ -112,7 +116,7 @@ set TZData(:Asia/Hebron) { {1509141600 7200 0 EET} {1521846000 10800 1 EEST} {1540591200 7200 0 EET} - {1553295600 10800 1 EEST} + {1553900400 10800 1 EEST} {1572040800 7200 0 EET} {1585350000 10800 1 EEST} {1604095200 7200 0 EET} @@ -122,9 +126,9 @@ set TZData(:Asia/Hebron) { {1666994400 7200 0 EET} {1679698800 10800 1 EEST} {1698444000 7200 0 EET} - {1711148400 10800 1 EEST} + {1711753200 10800 1 EEST} {1729893600 7200 0 EET} - {1742598000 10800 1 EEST} + {1743202800 10800 1 EEST} {1761343200 7200 0 EET} {1774652400 10800 1 EEST} {1793397600 7200 0 EET} @@ -134,9 +138,9 @@ set TZData(:Asia/Hebron) { {1856296800 7200 0 EET} {1869001200 10800 1 EEST} {1887746400 7200 0 EET} - {1900450800 10800 1 EEST} + {1901055600 10800 1 EEST} {1919196000 7200 0 EET} - {1931900400 10800 1 EEST} + {1932505200 10800 1 EEST} {1950645600 7200 0 EET} {1963954800 10800 1 EEST} {1982700000 7200 0 EET} @@ -146,7 +150,7 @@ set TZData(:Asia/Hebron) { {2045599200 7200 0 EET} {2058303600 10800 1 EEST} {2077048800 7200 0 EET} - {2089753200 10800 1 EEST} + {2090358000 10800 1 EEST} {2108498400 7200 0 EET} {2121807600 10800 1 EEST} {2140552800 7200 0 EET} @@ -156,9 +160,9 @@ set TZData(:Asia/Hebron) { {2203452000 7200 0 EET} {2216156400 10800 1 EEST} {2234901600 7200 0 EET} - {2247606000 10800 1 EEST} + {2248210800 10800 1 EEST} {2266351200 7200 0 EET} - {2279055600 10800 1 EEST} + {2279660400 10800 1 EEST} {2297800800 7200 0 EET} {2311110000 10800 1 EEST} {2329855200 7200 0 EET} @@ -168,7 +172,7 @@ set TZData(:Asia/Hebron) { {2392754400 7200 0 EET} {2405458800 10800 1 EEST} {2424204000 7200 0 EET} - {2436908400 10800 1 EEST} + {2437513200 10800 1 EEST} {2455653600 7200 0 EET} {2468962800 10800 1 EEST} {2487708000 7200 0 EET} @@ -178,9 +182,9 @@ set TZData(:Asia/Hebron) { {2550607200 7200 0 EET} {2563311600 10800 1 EEST} {2582056800 7200 0 EET} - {2594761200 10800 1 EEST} + {2595366000 10800 1 EEST} {2613506400 7200 0 EET} - {2626210800 10800 1 EEST} + {2626815600 10800 1 EEST} {2644956000 7200 0 EET} {2658265200 10800 1 EEST} {2677010400 7200 0 EET} @@ -190,9 +194,9 @@ set TZData(:Asia/Hebron) { {2739909600 7200 0 EET} {2752614000 10800 1 EEST} {2771359200 7200 0 EET} - {2784063600 10800 1 EEST} + {2784668400 10800 1 EEST} {2802808800 7200 0 EET} - {2815513200 10800 1 EEST} + {2816118000 10800 1 EEST} {2834258400 7200 0 EET} {2847567600 10800 1 EEST} {2866312800 7200 0 EET} @@ -202,7 +206,7 @@ set TZData(:Asia/Hebron) { {2929212000 7200 0 EET} {2941916400 10800 1 EEST} {2960661600 7200 0 EET} - {2973366000 10800 1 EEST} + {2973970800 10800 1 EEST} {2992111200 7200 0 EET} {3005420400 10800 1 EEST} {3024165600 7200 0 EET} @@ -212,9 +216,9 @@ set TZData(:Asia/Hebron) { {3087064800 7200 0 EET} {3099769200 10800 1 EEST} {3118514400 7200 0 EET} - {3131218800 10800 1 EEST} + {3131823600 10800 1 EEST} {3149964000 7200 0 EET} - {3162668400 10800 1 EEST} + {3163273200 10800 1 EEST} {3181413600 7200 0 EET} {3194722800 10800 1 EEST} {3213468000 7200 0 EET} @@ -224,7 +228,7 @@ set TZData(:Asia/Hebron) { {3276367200 7200 0 EET} {3289071600 10800 1 EEST} {3307816800 7200 0 EET} - {3320521200 10800 1 EEST} + {3321126000 10800 1 EEST} {3339266400 7200 0 EET} {3352575600 10800 1 EEST} {3371320800 7200 0 EET} @@ -234,9 +238,9 @@ set TZData(:Asia/Hebron) { {3434220000 7200 0 EET} {3446924400 10800 1 EEST} {3465669600 7200 0 EET} - {3478374000 10800 1 EEST} + {3478978800 10800 1 EEST} {3497119200 7200 0 EET} - {3509823600 10800 1 EEST} + {3510428400 10800 1 EEST} {3528568800 7200 0 EET} {3541878000 10800 1 EEST} {3560623200 7200 0 EET} @@ -246,9 +250,9 @@ set TZData(:Asia/Hebron) { {3623522400 7200 0 EET} {3636226800 10800 1 EEST} {3654972000 7200 0 EET} - {3667676400 10800 1 EEST} + {3668281200 10800 1 EEST} {3686421600 7200 0 EET} - {3699126000 10800 1 EEST} + {3699730800 10800 1 EEST} {3717871200 7200 0 EET} {3731180400 10800 1 EEST} {3749925600 7200 0 EET} @@ -258,7 +262,7 @@ set TZData(:Asia/Hebron) { {3812824800 7200 0 EET} {3825529200 10800 1 EEST} {3844274400 7200 0 EET} - {3856978800 10800 1 EEST} + {3857583600 10800 1 EEST} {3875724000 7200 0 EET} {3889033200 10800 1 EEST} {3907778400 7200 0 EET} @@ -268,9 +272,9 @@ set TZData(:Asia/Hebron) { {3970677600 7200 0 EET} {3983382000 10800 1 EEST} {4002127200 7200 0 EET} - {4014831600 10800 1 EEST} + {4015436400 10800 1 EEST} {4033576800 7200 0 EET} - {4046281200 10800 1 EEST} + {4046886000 10800 1 EEST} {4065026400 7200 0 EET} {4078335600 10800 1 EEST} {4097080800 7200 0 EET} diff --git a/library/tzdata/Asia/Jerusalem b/library/tzdata/Asia/Jerusalem index 2714963..e1e84f4 100644 --- a/library/tzdata/Asia/Jerusalem +++ b/library/tzdata/Asia/Jerusalem @@ -39,6 +39,10 @@ set TZData(:Asia/Jerusalem) { {150843600 7200 0 IST} {167176800 10800 1 IDT} {178664400 7200 0 IST} + {334015200 10800 1 IDT} + {337644000 7200 0 IST} + {452556000 10800 1 IDT} + {462232800 7200 0 IST} {482277600 10800 1 IDT} {495579600 7200 0 IST} {516751200 10800 1 IDT} diff --git a/library/tzdata/Etc/UCT b/library/tzdata/Etc/UCT index f7d795e..c843cdc 100644 --- a/library/tzdata/Etc/UCT +++ b/library/tzdata/Etc/UCT @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit - -set TZData(:Etc/UCT) { - {-9223372036854775808 0 0 UCT} +if {![info exists TZData(Etc/UTC)]} { + LoadTimeZoneFile Etc/UTC } +set TZData(:Etc/UCT) $TZData(:Etc/UTC) diff --git a/library/tzdata/UCT b/library/tzdata/UCT index 8449328..acfa48e 100644 --- a/library/tzdata/UCT +++ b/library/tzdata/UCT @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Etc/UCT)]} { - LoadTimeZoneFile Etc/UCT +if {![info exists TZData(Etc/UTC)]} { + LoadTimeZoneFile Etc/UTC } -set TZData(:UCT) $TZData(:Etc/UCT) +set TZData(:UCT) $TZData(:Etc/UTC) -- cgit v0.12 From 74e46544476cae3f150dfa7e28c803c3b3bfb7f6 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Wed, 27 Mar 2019 23:48:10 +0000 Subject: Make Tcl_StringMatch() into a wrapper macro around Tcl_StringCaseMatch() --- generic/tcl.decls | 2 +- generic/tclDecls.h | 7 +++++-- generic/tclStubInit.c | 2 ++ generic/tclUtil.c | 4 +++- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/generic/tcl.decls b/generic/tcl.decls index 5b3afeb..d404d25 100644 --- a/generic/tcl.decls +++ b/generic/tcl.decls @@ -864,7 +864,7 @@ declare 244 {nostub {Don't use this function in a stub-enabled extension}} { void Tcl_StaticPackage(Tcl_Interp *interp, const char *pkgName, Tcl_PackageInitProc *initProc, Tcl_PackageInitProc *safeInitProc) } -declare 245 { +declare 245 {deprecated {No longer in use, changed to macro}} { int Tcl_StringMatch(const char *str, const char *pattern) } declare 246 {deprecated {}} { diff --git a/generic/tclDecls.h b/generic/tclDecls.h index 865c960..c50b41f 100644 --- a/generic/tclDecls.h +++ b/generic/tclDecls.h @@ -754,7 +754,8 @@ EXTERN void Tcl_StaticPackage(Tcl_Interp *interp, Tcl_PackageInitProc *initProc, Tcl_PackageInitProc *safeInitProc); /* 245 */ -EXTERN int Tcl_StringMatch(const char *str, const char *pattern); +TCL_DEPRECATED("No longer in use, changed to macro") +int Tcl_StringMatch(const char *str, const char *pattern); /* 246 */ TCL_DEPRECATED("") int Tcl_TellOld(Tcl_Channel chan); @@ -2176,7 +2177,7 @@ typedef struct TclStubs { int (*tcl_SplitList) (Tcl_Interp *interp, const char *listStr, int *argcPtr, const char ***argvPtr); /* 242 */ void (*tcl_SplitPath) (const char *path, int *argcPtr, const char ***argvPtr); /* 243 */ TCL_DEPRECATED_API("Don't use this function in a stub-enabled extension") void (*tcl_StaticPackage) (Tcl_Interp *interp, const char *pkgName, Tcl_PackageInitProc *initProc, Tcl_PackageInitProc *safeInitProc); /* 244 */ - int (*tcl_StringMatch) (const char *str, const char *pattern); /* 245 */ + TCL_DEPRECATED_API("No longer in use, changed to macro") int (*tcl_StringMatch) (const char *str, const char *pattern); /* 245 */ TCL_DEPRECATED_API("") int (*tcl_TellOld) (Tcl_Channel chan); /* 246 */ TCL_DEPRECATED_API("No longer in use, changed to macro") int (*tcl_TraceVar) (Tcl_Interp *interp, const char *varName, int flags, Tcl_VarTraceProc *proc, ClientData clientData); /* 247 */ int (*tcl_TraceVar2) (Tcl_Interp *interp, const char *part1, const char *part2, int flags, Tcl_VarTraceProc *proc, ClientData clientData); /* 248 */ @@ -4073,6 +4074,8 @@ extern const TclStubs *tclStubsPtr; #define Tcl_GetUnicode(objPtr) Tcl_GetUnicodeFromObj((objPtr), NULL) #undef Tcl_BackgroundError #define Tcl_BackgroundError(interp) Tcl_BackgroundException((interp), TCL_ERROR) +#undef Tcl_StringMatch +#define Tcl_StringMatch(str, pattern) Tcl_StringCaseMatch((str), (pattern), 0) /* * Deprecated Tcl procedures: diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c index b1a1cee..197ed84 100644 --- a/generic/tclStubInit.c +++ b/generic/tclStubInit.c @@ -416,6 +416,8 @@ static int uniCharNcasecmp(const Tcl_UniChar *ucs, const Tcl_UniChar *uct, unsig # define Tcl_FindExecutable 0 # define Tcl_GetUnicode 0 # define TclOldFreeObj 0 +# undef Tcl_StringMatch +# define Tcl_StringMatch 0 # define TclBN_reverse 0 # define TclBN_fast_s_mp_mul_digs 0 # define TclBN_fast_s_mp_sqr 0 diff --git a/generic/tclUtil.c b/generic/tclUtil.c index 0788aed..250a393 100644 --- a/generic/tclUtil.c +++ b/generic/tclUtil.c @@ -2186,6 +2186,7 @@ Tcl_ConcatObj( return resPtr; } +#if !defined(TCL_NO_DEPRECATED) && TCL_MAJOR_VERSION < 9 /* *---------------------------------------------------------------------- * @@ -2204,6 +2205,7 @@ Tcl_ConcatObj( *---------------------------------------------------------------------- */ +#undef Tcl_StringMatch int Tcl_StringMatch( const char *str, /* String. */ @@ -2212,7 +2214,7 @@ Tcl_StringMatch( { return Tcl_StringCaseMatch(str, pattern, 0); } - +#endif /* TCL_NO_DEPRECATED */ /* *---------------------------------------------------------------------- * -- cgit v0.12 From abf9722f425fcd4a8327dddaf5c5ccf08b1d30d6 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Thu, 28 Mar 2019 20:59:03 +0000 Subject: Turn KARATSUBA_MUL_CUTOFF (insize libtommath) et al into a #define in stead of exported int symbols. --- generic/tclTomMath.h | 13 +----- generic/tclTomMathDecls.h | 8 ---- generic/tclTomMathInterface.c | 81 ++---------------------------------- libtommath/bn_mp_get_bit.c | 12 +----- libtommath/tommath.h | 25 +---------- libtommath/tommath_private.h | 11 ++++- macosx/Tcl.xcode/project.pbxproj | 4 -- macosx/Tcl.xcodeproj/project.pbxproj | 4 -- unix/Makefile.in | 6 +-- win/Makefile.in | 1 - win/makefile.vc | 1 - 11 files changed, 16 insertions(+), 150 deletions(-) diff --git a/generic/tclTomMath.h b/generic/tclTomMath.h index 0541ad8..3f23fd6 100644 --- a/generic/tclTomMath.h +++ b/generic/tclTomMath.h @@ -25,7 +25,7 @@ extern "C" { #endif /* MS Visual C++ doesn't have a 128bit type for words, so fall back to 32bit MPI's (where words are 64bit) */ -#if defined(_MSC_VER) || defined(__LLP64__) || defined(__e2k__) || defined(__LCC__) +#if defined(_WIN32) || defined(__LLP64__) || defined(__e2k__) || defined(__LCC__) # define MP_32BIT #endif @@ -110,9 +110,6 @@ typedef unsigned long long mp_word; /* otherwise the bits per digit is calculated automatically from the size of a mp_digit */ #ifndef DIGIT_BIT # define DIGIT_BIT (((CHAR_BIT * MP_SIZEOF_MP_DIGIT) - 1)) /* bits per digit */ -typedef unsigned long mp_min_u32; -#else -typedef mp_digit mp_min_u32; #endif #define MP_DIGIT_BIT DIGIT_BIT @@ -142,14 +139,6 @@ typedef mp_digit mp_min_u32; typedef int mp_err; -/* you'll have to tune these... */ -#if defined(BUILD_tcl) || !defined(_WIN32) -MODULE_SCOPE int KARATSUBA_MUL_CUTOFF, - KARATSUBA_SQR_CUTOFF, - TOOM_MUL_CUTOFF, - TOOM_SQR_CUTOFF; -#endif - /* define this to use lower memory usage routines (exptmods mostly) */ /* #define MP_LOW_MEM */ diff --git a/generic/tclTomMathDecls.h b/generic/tclTomMathDecls.h index dc06fc6..f287b84 100644 --- a/generic/tclTomMathDecls.h +++ b/generic/tclTomMathDecls.h @@ -36,21 +36,13 @@ #define TclBNRealloc(x,s) ((void*)ckrealloc((char*)(x),(size_t)(s))) /* MODULE_SCOPE void TclBNFree( void* ); */ #define TclBNFree(x) (ckfree((char*)(x))) -/* MODULE_SCOPE void* TclBNCalloc( size_t, size_t ); */ -/* unused - no macro */ #define XMALLOC(x) TclBNAlloc(x) #define XFREE(x) TclBNFree(x) #define XREALLOC(x,n) TclBNRealloc(x,n) -#define XCALLOC(n,x) TclBNCalloc(n,x) /* Rename the global symbols in libtommath to avoid linkage conflicts */ -#define KARATSUBA_MUL_CUTOFF TclBNKaratsubaMulCutoff -#define KARATSUBA_SQR_CUTOFF TclBNKaratsubaSqrCutoff -#define TOOM_MUL_CUTOFF TclBNToomMulCutoff -#define TOOM_SQR_CUTOFF TclBNToomSqrCutoff - #define bn_reverse TclBN_reverse #define fast_s_mp_mul_digs TclBN_fast_s_mp_mul_digs #define fast_s_mp_sqr TclBN_fast_s_mp_sqr diff --git a/generic/tclTomMathInterface.c b/generic/tclTomMathInterface.c index 48db8c3..d7da4ee 100644 --- a/generic/tclTomMathInterface.c +++ b/generic/tclTomMathInterface.c @@ -89,81 +89,6 @@ TclBN_revision(void) { return TCLTOMMATH_REVISION; } -#if 0 - -/* - *---------------------------------------------------------------------- - * - * TclBNAlloc -- - * - * Allocate memory for libtommath. - * - * Results: - * Returns a pointer to the allocated block. - * - * This procedure is a wrapper around Tcl_Alloc, needed because of a - * mismatched type signature between Tcl_Alloc and malloc. - * - *---------------------------------------------------------------------- - */ - -extern void * -TclBNAlloc( - size_t x) -{ - return (void *) ckalloc((unsigned int) x); -} - -/* - *---------------------------------------------------------------------- - * - * TclBNRealloc -- - * - * Change the size of an allocated block of memory in libtommath - * - * Results: - * Returns a pointer to the allocated block. - * - * This procedure is a wrapper around Tcl_Realloc, needed because of a - * mismatched type signature between Tcl_Realloc and realloc. - * - *---------------------------------------------------------------------- - */ - -void * -TclBNRealloc( - void *p, - size_t s) -{ - return (void *) ckrealloc((char *) p, (unsigned int) s); -} - -/* - *---------------------------------------------------------------------- - * - * TclBNFree -- - * - * Free allocated memory in libtommath. - * - * Results: - * None. - * - * Side effects: - * Memory is freed. - * - * This function is simply a wrapper around Tcl_Free, needed in libtommath - * because of a type mismatch between free and Tcl_Free. - * - *---------------------------------------------------------------------- - */ - -extern void -TclBNFree( - void *p) -{ - ckree((char *) p); -} -#endif /* *---------------------------------------------------------------------- @@ -219,7 +144,7 @@ TclBNInitBignumFromLong( p = a->dp; while (v) { *p++ = (mp_digit) (v & MP_MASK); - v >>= MP_DIGIT_BIT; + v >>= DIGIT_BIT; } a->used = p - a->dp; } @@ -287,7 +212,7 @@ TclBNInitBignumFromWideUInt( Tcl_Panic("initialization failure in TclBNInitBignumFromWideUInt"); } - a->sign = MP_ZPOS; + a->sign = 0; /* * Store the magnitude in the bignum. @@ -296,7 +221,7 @@ TclBNInitBignumFromWideUInt( p = a->dp; while (v) { *p++ = (mp_digit) (v & MP_MASK); - v >>= MP_DIGIT_BIT; + v >>= DIGIT_BIT; } a->used = p - a->dp; } diff --git a/libtommath/bn_mp_get_bit.c b/libtommath/bn_mp_get_bit.c index ab732c4..f5d2450 100644 --- a/libtommath/bn_mp_get_bit.c +++ b/libtommath/bn_mp_get_bit.c @@ -27,18 +27,8 @@ int mp_get_bit(const mp_int *a, int b) limb = b / DIGIT_BIT; - /* - * Zero is a special value with the member "used" set to zero. - * Needs to be tested before the check for the upper boundary - * otherwise (limb >= a->used) would be true for a = 0 - */ - - if (mp_iszero(a) != MP_NO) { - return MP_NO; - } - if (limb >= a->used) { - return MP_VAL; + return MP_NO; } bit = (mp_digit)(1) << (b % DIGIT_BIT); diff --git a/libtommath/tommath.h b/libtommath/tommath.h index 00c8b35..85814e7 100644 --- a/libtommath/tommath.h +++ b/libtommath/tommath.h @@ -23,7 +23,7 @@ extern "C" { #endif /* MS Visual C++ doesn't have a 128bit type for words, so fall back to 32bit MPI's (where words are 64bit) */ -#if defined(_MSC_VER) || defined(__LLP64__) || defined(__e2k__) || defined(__LCC__) +#if defined(_WIN32) || defined(__LLP64__) || defined(__e2k__) || defined(__LCC__) # define MP_32BIT #endif @@ -89,17 +89,7 @@ typedef unsigned long long mp_word; # endif #endif -/* otherwise the bits per digit is calculated automatically from the size of a mp_digit */ -#ifndef DIGIT_BIT -# define DIGIT_BIT (((CHAR_BIT * MP_SIZEOF_MP_DIGIT) - 1)) /* bits per digit */ -typedef unsigned long mp_min_u32; -#else -typedef mp_digit mp_min_u32; -#endif - -#define MP_DIGIT_BIT DIGIT_BIT #define MP_MASK ((((mp_digit)1)<<((mp_digit)DIGIT_BIT))-((mp_digit)1)) -#define MP_DIGIT_MAX MP_MASK /* equalities */ #define MP_LT -1 /* less than */ @@ -125,12 +115,6 @@ typedef mp_digit mp_min_u32; typedef int mp_err; -/* you'll have to tune these... */ -extern int KARATSUBA_MUL_CUTOFF, - KARATSUBA_SQR_CUTOFF, - TOOM_MUL_CUTOFF, - TOOM_SQR_CUTOFF; - /* define this to use lower memory usage routines (exptmods mostly) */ /* #define MP_LOW_MEM */ @@ -143,9 +127,6 @@ extern int KARATSUBA_MUL_CUTOFF, # endif #endif -/* size of comba arrays, should be at least 2 * 2**(BITS_PER_WORD - BITS_PER_DIGIT*2) */ -#define MP_WARRAY (1u << (((sizeof(mp_word) * CHAR_BIT) - (2 * DIGIT_BIT)) + 1)) - /* the infamous mp_int structure */ typedef struct { int used, alloc, sign; @@ -156,10 +137,6 @@ typedef struct { typedef int ltm_prime_callback(unsigned char *dst, int len, void *dat); -#define USED(m) ((m)->used) -#define DIGIT(m, k) ((m)->dp[(k)]) -#define SIGN(m) ((m)->sign) - /* error code to char* string */ const char *mp_error_to_string(int code); diff --git a/libtommath/tommath_private.h b/libtommath/tommath_private.h index 8fc3442..2096f77 100644 --- a/libtommath/tommath_private.h +++ b/libtommath/tommath_private.h @@ -42,15 +42,22 @@ extern "C" { # define XMALLOC malloc # define XFREE free # define XREALLOC realloc -# define XCALLOC calloc #elif 0 /* prototypes for our heap functions */ extern void *XMALLOC(size_t n); extern void *XREALLOC(void *p, size_t n); -extern void *XCALLOC(size_t n, size_t s); extern void XFREE(void *p); #endif +/* you'll have to tune these... */ +#define KARATSUBA_MUL_CUTOFF 80 /* Min. number of digits before Karatsuba multiplication is used. */ +#define KARATSUBA_SQR_CUTOFF 120 /* Min. number of digits before Karatsuba squaring is used. */ +#define TOOM_MUL_CUTOFF 350 /* no optimal values of these are known yet so set em high */ +#define TOOM_SQR_CUTOFF 400 + +/* size of comba arrays, should be at least 2 * 2**(BITS_PER_WORD - BITS_PER_DIGIT*2) */ +#define MP_WARRAY (1u << (((sizeof(mp_word) * CHAR_BIT) - (2 * DIGIT_BIT)) + 1)) + /* lowlevel functions, do not call! */ int s_mp_add(const mp_int *a, const mp_int *b, mp_int *c); int s_mp_sub(const mp_int *a, const mp_int *b, mp_int *c); diff --git a/macosx/Tcl.xcode/project.pbxproj b/macosx/Tcl.xcode/project.pbxproj index c5b3868..578fb55 100644 --- a/macosx/Tcl.xcode/project.pbxproj +++ b/macosx/Tcl.xcode/project.pbxproj @@ -145,7 +145,6 @@ F96D495108F272C3004A47F5 /* bn_s_mp_mul_digs.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D308F272B3004A47F5 /* bn_s_mp_mul_digs.c */; }; F96D495308F272C3004A47F5 /* bn_s_mp_sqr.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D508F272B3004A47F5 /* bn_s_mp_sqr.c */; }; F96D495408F272C3004A47F5 /* bn_s_mp_sub.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D608F272B3004A47F5 /* bn_s_mp_sub.c */; }; - F96D495508F272C3004A47F5 /* bncore.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D708F272B3004A47F5 /* bncore.c */; }; F96D49A908F272C4004A47F5 /* tclMacOSXBundle.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D433908F272B5004A47F5 /* tclMacOSXBundle.c */; }; F96D49AD08F272C4004A47F5 /* tclMacOSXFCmd.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D433D08F272B5004A47F5 /* tclMacOSXFCmd.c */; }; F96D49AE08F272C4004A47F5 /* tclMacOSXNotify.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D433E08F272B5004A47F5 /* tclMacOSXNotify.c */; }; @@ -619,7 +618,6 @@ F96D42D308F272B3004A47F5 /* bn_s_mp_mul_digs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_s_mp_mul_digs.c; sourceTree = ""; }; F96D42D508F272B3004A47F5 /* bn_s_mp_sqr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_s_mp_sqr.c; sourceTree = ""; }; F96D42D608F272B3004A47F5 /* bn_s_mp_sub.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_s_mp_sub.c; sourceTree = ""; }; - F96D42D708F272B3004A47F5 /* bncore.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bncore.c; sourceTree = ""; }; F96D432908F272B4004A47F5 /* tommath_class.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tommath_class.h; sourceTree = ""; }; F96D432A08F272B4004A47F5 /* tommath_superclass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tommath_superclass.h; sourceTree = ""; }; F96D432B08F272B4004A47F5 /* license.terms */ = {isa = PBXFileReference; explicitFileType = text; fileEncoding = 4; path = license.terms; sourceTree = ""; }; @@ -1480,7 +1478,6 @@ F96D42D308F272B3004A47F5 /* bn_s_mp_mul_digs.c */, F96D42D508F272B3004A47F5 /* bn_s_mp_sqr.c */, F96D42D608F272B3004A47F5 /* bn_s_mp_sub.c */, - F96D42D708F272B3004A47F5 /* bncore.c */, F96D432908F272B4004A47F5 /* tommath_class.h */, F96D432A08F272B4004A47F5 /* tommath_superclass.h */, ); @@ -2111,7 +2108,6 @@ F96D495108F272C3004A47F5 /* bn_s_mp_mul_digs.c in Sources */, F96D495308F272C3004A47F5 /* bn_s_mp_sqr.c in Sources */, F96D495408F272C3004A47F5 /* bn_s_mp_sub.c in Sources */, - F96D495508F272C3004A47F5 /* bncore.c in Sources */, F96D49A908F272C4004A47F5 /* tclMacOSXBundle.c in Sources */, F96D49AD08F272C4004A47F5 /* tclMacOSXFCmd.c in Sources */, F96D49AE08F272C4004A47F5 /* tclMacOSXNotify.c in Sources */, diff --git a/macosx/Tcl.xcodeproj/project.pbxproj b/macosx/Tcl.xcodeproj/project.pbxproj index 6068112..a533e11 100644 --- a/macosx/Tcl.xcodeproj/project.pbxproj +++ b/macosx/Tcl.xcodeproj/project.pbxproj @@ -145,7 +145,6 @@ F96D495108F272C3004A47F5 /* bn_s_mp_mul_digs.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D308F272B3004A47F5 /* bn_s_mp_mul_digs.c */; }; F96D495308F272C3004A47F5 /* bn_s_mp_sqr.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D508F272B3004A47F5 /* bn_s_mp_sqr.c */; }; F96D495408F272C3004A47F5 /* bn_s_mp_sub.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D608F272B3004A47F5 /* bn_s_mp_sub.c */; }; - F96D495508F272C3004A47F5 /* bncore.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D708F272B3004A47F5 /* bncore.c */; }; F96D49A908F272C4004A47F5 /* tclMacOSXBundle.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D433908F272B5004A47F5 /* tclMacOSXBundle.c */; }; F96D49AD08F272C4004A47F5 /* tclMacOSXFCmd.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D433D08F272B5004A47F5 /* tclMacOSXFCmd.c */; }; F96D49AE08F272C4004A47F5 /* tclMacOSXNotify.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D433E08F272B5004A47F5 /* tclMacOSXNotify.c */; }; @@ -619,7 +618,6 @@ F96D42D308F272B3004A47F5 /* bn_s_mp_mul_digs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_s_mp_mul_digs.c; sourceTree = ""; }; F96D42D508F272B3004A47F5 /* bn_s_mp_sqr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_s_mp_sqr.c; sourceTree = ""; }; F96D42D608F272B3004A47F5 /* bn_s_mp_sub.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_s_mp_sub.c; sourceTree = ""; }; - F96D42D708F272B3004A47F5 /* bncore.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bncore.c; sourceTree = ""; }; F96D432908F272B4004A47F5 /* tommath_class.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tommath_class.h; sourceTree = ""; }; F96D432A08F272B4004A47F5 /* tommath_superclass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tommath_superclass.h; sourceTree = ""; }; F96D432B08F272B4004A47F5 /* license.terms */ = {isa = PBXFileReference; explicitFileType = text; fileEncoding = 4; path = license.terms; sourceTree = ""; }; @@ -1480,7 +1478,6 @@ F96D42D308F272B3004A47F5 /* bn_s_mp_mul_digs.c */, F96D42D508F272B3004A47F5 /* bn_s_mp_sqr.c */, F96D42D608F272B3004A47F5 /* bn_s_mp_sub.c */, - F96D42D708F272B3004A47F5 /* bncore.c */, F96D432908F272B4004A47F5 /* tommath_class.h */, F96D432A08F272B4004A47F5 /* tommath_superclass.h */, ); @@ -2111,7 +2108,6 @@ F96D495108F272C3004A47F5 /* bn_s_mp_mul_digs.c in Sources */, F96D495308F272C3004A47F5 /* bn_s_mp_sqr.c in Sources */, F96D495408F272C3004A47F5 /* bn_s_mp_sub.c in Sources */, - F96D495508F272C3004A47F5 /* bncore.c in Sources */, F96D49A908F272C4004A47F5 /* tclMacOSXBundle.c in Sources */, F96D49AD08F272C4004A47F5 /* tclMacOSXFCmd.c in Sources */, F96D49AE08F272C4004A47F5 /* tclMacOSXNotify.c in Sources */, diff --git a/unix/Makefile.in b/unix/Makefile.in index 1610962..bdab85a 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -315,7 +315,7 @@ GENERIC_OBJS = regcomp.o regexec.o regfree.o regerror.o tclAlloc.o \ OO_OBJS = tclOO.o tclOOBasic.o tclOOCall.o tclOODefineCmds.o tclOOInfo.o \ tclOOMethod.o tclOOStubInit.o -TOMMATH_OBJS = bncore.o bn_reverse.o bn_fast_s_mp_mul_digs.o \ +TOMMATH_OBJS = bn_reverse.o bn_fast_s_mp_mul_digs.o \ bn_fast_s_mp_sqr.o bn_mp_add.o bn_mp_and.o \ bn_mp_add_d.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o \ bn_mp_cmp.o bn_mp_cmp_d.o bn_mp_cmp_mag.o \ @@ -482,7 +482,6 @@ STUB_SRCS = \ $(GENERIC_DIR)/tclOOStubLib.c TOMMATH_SRCS = \ - $(TOMMATH_DIR)/bncore.c \ $(TOMMATH_DIR)/bn_reverse.c \ $(TOMMATH_DIR)/bn_fast_s_mp_mul_digs.c \ $(TOMMATH_DIR)/bn_fast_s_mp_sqr.c \ @@ -1356,9 +1355,6 @@ tclThreadTest.o: $(GENERIC_DIR)/tclThreadTest.c tclTomMathInterface.o: $(GENERIC_DIR)/tclTomMathInterface.c $(MATHHDRS) $(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclTomMathInterface.c -bncore.o: $(TOMMATH_DIR)/bncore.c $(MATHHDRS) - $(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bncore.c - bn_reverse.o: $(TOMMATH_DIR)/bn_reverse.c $(MATHHDRS) $(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_reverse.c diff --git a/win/Makefile.in b/win/Makefile.in index b983f0a..a427eee 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -311,7 +311,6 @@ GENERIC_OBJS = \ tclZlib.$(OBJEXT) TOMMATH_OBJS = \ - bncore.${OBJEXT} \ bn_reverse.${OBJEXT} \ bn_fast_s_mp_mul_digs.${OBJEXT} \ bn_fast_s_mp_sqr.${OBJEXT} \ diff --git a/win/makefile.vc b/win/makefile.vc index adfd7c4..2e0198e 100644 --- a/win/makefile.vc +++ b/win/makefile.vc @@ -251,7 +251,6 @@ ZLIBOBJS = \ $(TMP_DIR)\zutil.obj TOMMATHOBJS = \ - $(TMP_DIR)\bncore.obj \ $(TMP_DIR)\bn_reverse.obj \ $(TMP_DIR)\bn_fast_s_mp_mul_digs.obj \ $(TMP_DIR)\bn_fast_s_mp_sqr.obj \ -- cgit v0.12