aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--node.c15
2 files changed, 8 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index 8ff8f82c..dc2b3653 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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>.
diff --git a/node.c b/node.c
index 04a90adc..2db6a1ef 100644
--- a/node.c
+++ b/node.c
@@ -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