diff options
author | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2014-10-30 15:11:34 +0000 |
---|---|---|
committer | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2014-10-30 15:11:34 +0000 |
commit | 65fc3393bfb1ceec74d1b6aba45fabdf2882e259 (patch) | |
tree | ab298b832cf840db49fe7b2b7e367f43e67f0a6d | |
parent | 0357e84ecc92c5f405fd06f7a4d0c332b9fce1c2 (diff) | |
download | mpfr-65fc3393bfb1ceec74d1b6aba45fabdf2882e259.tar.gz |
[src/get_str.c] Free the temporary memory allocated in the Ziv loop ASAP
and at a single place (the code should be clearer like that).
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@9227 280ebfd0-de03-0410-8827-d642c229c3f4
-rw-r--r-- | src/get_str.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/get_str.c b/src/get_str.c index c8ffa2473..e17b4170a 100644 --- a/src/get_str.c +++ b/src/get_str.c @@ -2528,7 +2528,11 @@ mpfr_get_str (char *s, mpfr_exp_t *e, int b, size_t m, mpfr_srcptr x, /* check if rounding is possible */ if (exact) err = -1; + ret = mpfr_get_str_aux (s, e, a, n, exp_a, err, b, m, rnd); + + MPFR_TMP_FREE (marker); + if (ret == MPFR_ROUND_FAILED) { /* too large error: increment the working precision */ @@ -2550,8 +2554,6 @@ mpfr_get_str (char *s, mpfr_exp_t *e, int b, size_t m, mpfr_srcptr x, } else break; - - MPFR_TMP_FREE (marker); } MPFR_ZIV_FREE (loop); @@ -2559,7 +2561,6 @@ mpfr_get_str (char *s, mpfr_exp_t *e, int b, size_t m, mpfr_srcptr x, MPFR_LOG_MSG (("e=%" MPFR_EXP_FSPEC "d\n", (mpfr_eexp_t) *e)); - MPFR_TMP_FREE (marker); MPFR_SAVE_EXPO_FREE (expo); return s0; } |