aboutsummaryrefslogtreecommitdiffstats
path: root/node.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2018-04-02 16:40:17 +0300
committerArnold D. Robbins <arnold@skeeve.com>2018-04-02 16:40:17 +0300
commit34021ae7b7b8662b41fe6feeced4cf619cb31c21 (patch)
tree6eb8b08d2d742d9e479012d542481d3b9a98e3b2 /node.c
parent2f996c14cd0175edf4fedf8335e40c4dd46e67f7 (diff)
parente3863843f1f37bf854a4f5a8cf2985448933a42f (diff)
downloadegawk-34021ae7b7b8662b41fe6feeced4cf619cb31c21.tar.gz
egawk-34021ae7b7b8662b41fe6feeced4cf619cb31c21.tar.bz2
egawk-34021ae7b7b8662b41fe6feeced4cf619cb31c21.zip
Merge branch 'gawk-4.2-stable'
Diffstat (limited to 'node.c')
-rw-r--r--node.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/node.c b/node.c
index add959f7..fcd2bf33 100644
--- a/node.c
+++ b/node.c
@@ -306,8 +306,24 @@ r_dupnode(NODE *n)
}
#endif
- getnode(r);
- *r = *n;
+#ifdef HAVE_MPFR
+ if ((n->flags & MPZN) != 0) {
+ r = mpg_integer();
+ mpz_set(r->mpg_i, n->mpg_i);
+ r->flags = n->flags;
+ } 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;
+ } else {
+#endif
+ getnode(r);
+ *r = *n;
+#ifdef HAVE_MPFR
+ }
+#endif
+
r->flags |= MALLOC;
r->valref = 1;
/*