summaryrefslogtreecommitdiff
path: root/node.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2020-07-05 21:36:01 +0300
committerArnold D. Robbins <arnold@skeeve.com>2020-07-05 21:36:01 +0300
commitc31e4636edc5e444f9815295f373d4b1170ef260 (patch)
tree32c42ef2b4eda898a5f01eee118870b531399846 /node.c
parentf60ced696bc752cdc1a1f45ce2cc9d6149be7087 (diff)
downloadgawk-c31e4636edc5e444f9815295f373d4b1170ef260.tar.gz
MPFR bug fixes in some corner cases.
Diffstat (limited to 'node.c')
-rw-r--r--node.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/node.c b/node.c
index bcb9a4a5..04a90adc 100644
--- a/node.c
+++ b/node.c
@@ -316,11 +316,13 @@ r_dupnode(NODE *n)
r = mpg_integer();
mpz_set(r->mpg_i, n->mpg_i);
r->flags = n->flags;
+ r->strndmode = MPFR_round_mode;
} else if ((n->flags & MPFN) != 0) {
r = mpg_float();
int tval = mpfr_set(r->mpg_numbr, n->mpg_numbr, ROUND_MODE);
IEEE_FMT(r->mpg_numbr, tval);
r->flags = n->flags;
+ r->strndmode = MPFR_round_mode;
} else {
#endif
getnode(r);
@@ -343,6 +345,7 @@ r_dupnode(NODE *n)
emalloc(r->stptr, char *, n->stlen + 1, "r_dupnode");
memcpy(r->stptr, n->stptr, n->stlen);
r->stptr[n->stlen] = '\0';
+ r->stlen = n->stlen;
if ((n->flags & WSTRCUR) != 0) {
r->wstlen = n->wstlen;
emalloc(r->wstptr, wchar_t *, sizeof(wchar_t) * (n->wstlen + 1), "r_dupnode");