diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | awk.h | 1 | ||||
-rw-r--r-- | gawkapi.c | 8 | ||||
-rw-r--r-- | mpfr.c | 16 | ||||
-rw-r--r-- | node.c | 7 |
5 files changed, 27 insertions, 12 deletions
@@ -3,6 +3,13 @@ * io.c (do_find_source): On VMS, don't add the `/' separater. Thanks to Anders Wallin. + MPFR minor cleanup: + + * awk.h (mpfr_unset): Declare new function. + * mpfr.c (mpfr_unset): New function. + * node.c (r_unref): Call it instead of inline code. + * gawk_api.c (api_sym_update_scalar): Call it instead of inline code. + 2012-11-13 Arnold D. Robbins <arnold@skeeve.com> * symbol.c (get_symbols): Check type, not vname. Keeps @@ -1575,6 +1575,7 @@ extern long getenv_long(const char *name); /* mpfr.c */ extern void set_PREC(void); extern void set_ROUNDMODE(void); +extern void mpfr_unset(NODE *n); #ifdef HAVE_MPFR extern int mpg_cmp(const NODE *, const NODE *); extern int format_ieee(mpfr_ptr, int); @@ -681,12 +681,8 @@ api_sym_update_scalar(awk_ext_id_t id, /* r_unref: */ if ((r->flags & (MALLOC|STRCUR)) == (MALLOC|STRCUR)) efree(r->stptr); -#ifdef HAVE_MPFR - if (is_mpg_float(r)) - mpfr_clear(r->mpg_numbr); - else if (is_mpg_integer(r)) - mpz_clear(r->mpg_i); -#endif + + mpfr_unset(r); free_wstr(r); /* make_str_node(s, l, ALREADY_MALLOCED): */ @@ -1603,6 +1603,17 @@ mpg_fmt(const char *mesg, ...) return mesg; } +/* mpfr_unset --- clear out the MPFR values */ + +void +mpfr_unset(NODE *n) +{ + if (is_mpg_float(n)) + mpfr_clear(n->mpg_numbr); + else if (is_mpg_integer(n)) + mpz_clear(n->mpg_i); +} + #else void @@ -1617,4 +1628,9 @@ set_ROUNDMODE() /* dummy function */ } +void +mpfr_unset(NODE *n) +{ + /* dummy function */ +} #endif @@ -471,12 +471,7 @@ r_unref(NODE *tmp) efree(tmp->stptr); #endif -#ifdef HAVE_MPFR - if (is_mpg_float(tmp)) - mpfr_clear(tmp->mpg_numbr); - else if (is_mpg_integer(tmp)) - mpz_clear(tmp->mpg_i); -#endif + mpfr_unset(tmp); free_wstr(tmp); freenode(tmp); |