summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2021-01-15 22:01:20 (GMT)
committerdgp <dgp@users.sourceforge.net>2021-01-15 22:01:20 (GMT)
commit120e20626993d6ea54626bd97ee13d70363534fb (patch)
treea6b727ed88237449e74b519f1a7f56847fd86831 /generic
parent3d5d443c72f5b384643fecf9bdaa1c20800261bd (diff)
parentdbd3f823aa0643083cc896c944c8188782f84153 (diff)
downloadtcl-120e20626993d6ea54626bd97ee13d70363534fb.zip
tcl-120e20626993d6ea54626bd97ee13d70363534fb.tar.gz
tcl-120e20626993d6ea54626bd97ee13d70363534fb.tar.bz2
merge 8.7
Diffstat (limited to 'generic')
-rw-r--r--generic/regc_lex.c2
-rw-r--r--generic/tclStrToD.c25
-rw-r--r--generic/tclStubInit.c3
-rw-r--r--generic/tclTomMath.decls4
-rw-r--r--generic/tclTomMathDecls.h12
5 files changed, 32 insertions, 14 deletions
diff --git a/generic/regc_lex.c b/generic/regc_lex.c
index 2914cbb..2c0ddeb 100644
--- a/generic/regc_lex.c
+++ b/generic/regc_lex.c
@@ -1005,7 +1005,7 @@ brenext(
if (LASTTYPE(EMPTY) || LASTTYPE('(') || LASTTYPE('^')) {
RETV(PLAIN, c);
}
- RET('*');
+ RETV('*', 1);
break;
case CHR('['):
if (HAVE(6) && *(v->now+0) == CHR('[') &&
diff --git a/generic/tclStrToD.c b/generic/tclStrToD.c
index 7aee804..b213bed 100644
--- a/generic/tclStrToD.c
+++ b/generic/tclStrToD.c
@@ -22,6 +22,11 @@
#define copysign _copysign
#endif
+#ifndef PRIx64
+# define PRIx64 TCL_LL_MODIFIER "x"
+#endif
+
+
/*
* This code supports (at least hypothetically), IBM, Cray, VAX and IEEE-754
* floating point; of these, only IEEE-754 can represent NaN. IEEE-754 can be
@@ -899,12 +904,14 @@ TclParseNumber(
under = 0;
state = BINARY;
break;
- } else if (c == '_' && !(flags & TCL_PARSE_NO_UNDERSCORE)) {
- /* Ignore numeric "white space" */
- under = 1;
- break;
+ } else if (c == '_' && !(flags & TCL_PARSE_NO_UNDERSCORE)) {
+ /* Ignore numeric "white space" */
+ under = 1;
+ break;
} else if (c != '1') {
goto endgame;
+ } else {
+ under = 0;
}
if (objPtr != NULL) {
shift = numTrailZeros + 1;
@@ -944,11 +951,11 @@ TclParseNumber(
under = 0;
numTrailZeros++;
} else if ( ! isdigit(UCHAR(c))) {
- if (c == '_' && !(flags & TCL_PARSE_NO_UNDERSCORE)) {
- /* Ignore numeric "white space" */
- under = 1;
- break;
- }
+ if (c == '_' && !(flags & TCL_PARSE_NO_UNDERSCORE)) {
+ /* Ignore numeric "white space" */
+ under = 1;
+ break;
+ }
goto endgame;
}
under = 0;
diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c
index 6bd6e53..e29330b 100644
--- a/generic/tclStubInit.c
+++ b/generic/tclStubInit.c
@@ -138,6 +138,7 @@ static void uniCodePanic(void) {
#define TclBN_mp_to_radix mp_to_radix
#define TclBN_mp_to_ubin mp_to_ubin
#define TclBN_mp_ubin_size mp_ubin_size
+#define TclBN_mp_unpack mp_unpack
#define TclBN_mp_xor mp_xor
#define TclBN_mp_zero mp_zero
#define TclBN_s_mp_add s_mp_add
@@ -1199,7 +1200,7 @@ const TclTomMathStubs tclTomMathStubs = {
TclBN_mp_set_u64, /* 68 */
TclBN_mp_get_mag_u64, /* 69 */
TclBN_mp_set_i64, /* 70 */
- 0, /* 71 */
+ TclBN_mp_unpack, /* 71 */
0, /* 72 */
TclBN_mp_tc_and, /* 73 */
TclBN_mp_tc_or, /* 74 */
diff --git a/generic/tclTomMath.decls b/generic/tclTomMath.decls
index 9d6eb1c..5ea16f1 100644
--- a/generic/tclTomMath.decls
+++ b/generic/tclTomMath.decls
@@ -244,6 +244,10 @@ declare 69 {
declare 70 {
void TclBN_mp_set_i64(mp_int *a, int64_t i)
}
+declare 71 {
+ mp_err MP_WUR TclBN_mp_unpack(mp_int *rop, size_t count, mp_order order, size_t size,
+ mp_endian endian, size_t nails, const void *op)
+}
# Added in libtommath 1.1.0
declare 73 {deprecated {merged with mp_and}} {
diff --git a/generic/tclTomMathDecls.h b/generic/tclTomMathDecls.h
index 1427e8b..4c1505f 100644
--- a/generic/tclTomMathDecls.h
+++ b/generic/tclTomMathDecls.h
@@ -141,6 +141,7 @@ MODULE_SCOPE mp_err TclBN_s_mp_sub_d(const mp_int *a, mp_digit b, mp_int *c);
#define mp_to_radix TclBN_mp_to_radix
#define mp_to_ubin TclBN_mp_to_ubin
#define mp_ubin_size TclBN_mp_ubin_size
+#define mp_unpack TclBN_mp_unpack
#define mp_xor TclBN_mp_xor
#define mp_zero TclBN_mp_zero
#define s_mp_add TclBN_s_mp_add
@@ -379,7 +380,11 @@ EXTERN void TclBN_mp_set_u64(mp_int *a, uint64_t i);
EXTERN uint64_t TclBN_mp_get_mag_u64(const mp_int *a) MP_WUR;
/* 70 */
EXTERN void TclBN_mp_set_i64(mp_int *a, int64_t i);
-/* Slot 71 is reserved */
+/* 71 */
+EXTERN mp_err TclBN_mp_unpack(mp_int *rop, size_t count,
+ mp_order order, size_t size,
+ mp_endian endian, size_t nails,
+ const void *op) MP_WUR;
/* Slot 72 is reserved */
/* 73 */
TCL_DEPRECATED("merged with mp_and")
@@ -482,7 +487,7 @@ typedef struct TclTomMathStubs {
void (*tclBN_mp_set_u64) (mp_int *a, uint64_t i); /* 68 */
uint64_t (*tclBN_mp_get_mag_u64) (const mp_int *a) MP_WUR; /* 69 */
void (*tclBN_mp_set_i64) (mp_int *a, int64_t i); /* 70 */
- void (*reserved71)(void);
+ mp_err (*tclBN_mp_unpack) (mp_int *rop, size_t count, mp_order order, size_t size, mp_endian endian, size_t nails, const void *op) MP_WUR; /* 71 */
void (*reserved72)(void);
TCL_DEPRECATED_API("merged with mp_and") mp_err (*tclBN_mp_tc_and) (const mp_int *a, const mp_int *b, mp_int *c); /* 73 */
TCL_DEPRECATED_API("merged with mp_or") mp_err (*tclBN_mp_tc_or) (const mp_int *a, const mp_int *b, mp_int *c); /* 74 */
@@ -648,7 +653,8 @@ extern const TclTomMathStubs *tclTomMathStubsPtr;
(tclTomMathStubsPtr->tclBN_mp_get_mag_u64) /* 69 */
#define TclBN_mp_set_i64 \
(tclTomMathStubsPtr->tclBN_mp_set_i64) /* 70 */
-/* Slot 71 is reserved */
+#define TclBN_mp_unpack \
+ (tclTomMathStubsPtr->tclBN_mp_unpack) /* 71 */
/* Slot 72 is reserved */
#define TclBN_mp_tc_and \
(tclTomMathStubsPtr->tclBN_mp_tc_and) /* 73 */