diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | node.c | 15 |
2 files changed, 8 insertions, 11 deletions
@@ -1,3 +1,7 @@ +2020-07-07 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * node.c (r_dupnode): Sanitize the code, particularly for MPFR. + 2020-07-05 Arnold D. Robbins <arnold@skeeve.com> Bug fixes in MPFR, reported by Hyunho Cho<mug896@naver.com>. @@ -310,24 +310,17 @@ r_dupnode(NODE *n) return n; } #endif + getnode(r); + *r = *n; #ifdef HAVE_MPFR if ((n->flags & MPZN) != 0) { - r = mpg_integer(); + mpz_init(r->mpg_i); 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(); + mpfr_init(r->mpg_numbr); 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); - *r = *n; -#ifdef HAVE_MPFR } #endif |