summaryrefslogtreecommitdiff
path: root/src/get_str.c
diff options
context:
space:
mode:
authorvlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2014-10-30 15:11:34 +0000
committervlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2014-10-30 15:11:34 +0000
commit65fc3393bfb1ceec74d1b6aba45fabdf2882e259 (patch)
treeab298b832cf840db49fe7b2b7e367f43e67f0a6d /src/get_str.c
parent0357e84ecc92c5f405fd06f7a4d0c332b9fce1c2 (diff)
downloadmpfr-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
Diffstat (limited to 'src/get_str.c')
-rw-r--r--src/get_str.c7
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;
}