summaryrefslogtreecommitdiff
path: root/src/strtofr.c
diff options
context:
space:
mode:
authorzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2018-09-10 19:17:57 +0000
committerzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2018-09-10 19:17:57 +0000
commit79f591c2fe608c7497a87f6f4cf621c0fd8d62b0 (patch)
tree3a9bd0df194d151b9a9d6d6e1b36ab18ff86c722 /src/strtofr.c
parent3bf2518bb4947d0ef393b2fcb04997ea511ce7fe (diff)
downloadmpfr-79f591c2fe608c7497a87f6f4cf621c0fd8d62b0.tar.gz
[src/strtofr.c] fix from r13163 was incorrect
[tests/tget_str.c] added a testcase, and fixed an error message git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@13164 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'src/strtofr.c')
-rw-r--r--src/strtofr.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/strtofr.c b/src/strtofr.c
index 5f4b80e72..703caa7b2 100644
--- a/src/strtofr.c
+++ b/src/strtofr.c
@@ -570,7 +570,11 @@ parsed_string_to_mpfr (mpfr_t x, struct parsed_string *pstr, mpfr_rnd_t rnd)
exact = mpn_rshift (y, y, real_ysize, GMP_NUMB_BITS - count) ==
MPFR_LIMB_ZERO;
else
- exact = 1;
+ {
+ /* copy {y+1, real_ysize-1} to {y, real_ysize-1} */
+ exact = y[0] == MPFR_LIMB_ZERO;
+ mpn_copyi (y, y + 1, real_ysize - 1);
+ }
/* for each bit shift increase exponent of y */
exp = GMP_NUMB_BITS - count;
}