diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2020-07-05 21:36:01 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2020-07-05 21:36:01 +0300 |
commit | c31e4636edc5e444f9815295f373d4b1170ef260 (patch) | |
tree | 32c42ef2b4eda898a5f01eee118870b531399846 /node.c | |
parent | f60ced696bc752cdc1a1f45ce2cc9d6149be7087 (diff) | |
download | egawk-c31e4636edc5e444f9815295f373d4b1170ef260.tar.gz egawk-c31e4636edc5e444f9815295f373d4b1170ef260.tar.bz2 egawk-c31e4636edc5e444f9815295f373d4b1170ef260.zip |
MPFR bug fixes in some corner cases.
Diffstat (limited to 'node.c')
-rw-r--r-- | node.c | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -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"); |