summaryrefslogtreecommitdiff
path: root/node.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2020-07-07 17:09:32 +0300
committerArnold D. Robbins <arnold@skeeve.com>2020-07-07 17:09:32 +0300
commitd5590b1ba64e2135036f0c5de0844a9cddec75f0 (patch)
treeef20ecd6047cf789ca9795dfd5eeda9fa89cf90a /node.c
parent12701888ede0f58d20c7bd9bdb4334d1bf10bce1 (diff)
downloadgawk-d5590b1ba64e2135036f0c5de0844a9cddec75f0.tar.gz
Improve r_dupnode.
Diffstat (limited to 'node.c')
-rw-r--r--node.c15
1 files changed, 4 insertions, 11 deletions
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