diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2018-04-02 16:37:17 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2018-04-02 16:37:17 +0300 |
commit | 0742fa4072e894ba08babcc5c699bc0f48841ed3 (patch) | |
tree | 355071e65d6af3ebf23db457ef6345b38e9751c9 /node.c | |
parent | f933fc9f8a05cf51fe94fc1ed24dc2a1586af42c (diff) | |
download | egawk-0742fa4072e894ba08babcc5c699bc0f48841ed3.tar.gz egawk-0742fa4072e894ba08babcc5c699bc0f48841ed3.tar.bz2 egawk-0742fa4072e894ba08babcc5c699bc0f48841ed3.zip |
Copy MPZ/MPFR bits also, in r_dupnode.
Diffstat (limited to 'node.c')
-rw-r--r-- | node.c | 20 |
1 files changed, 18 insertions, 2 deletions
@@ -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; /* |