summaryrefslogtreecommitdiff
path: root/src/gmp_op.c
diff options
context:
space:
mode:
authorvlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2018-02-20 14:54:05 +0000
committervlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2018-02-20 14:54:05 +0000
commit9c7bc76af5af06c1dd34f8c54e754a16a4b29e5b (patch)
treed5b9b3b700debba1214bc3a839ff75ecf3f9080b /src/gmp_op.c
parent42b0e9591536209a97107fecefef572b5a99aaf5 (diff)
downloadmpfr-9c7bc76af5af06c1dd34f8c54e754a16a4b29e5b.tar.gz
[src/gmp_op.c] Fixed a bug in mpfr_cmp_q on NaN rational: the NaN flag
was set by mpfr_set_q, but the flags were not restored just after. git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@12343 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'src/gmp_op.c')
-rw-r--r--src/gmp_op.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/gmp_op.c b/src/gmp_op.c
index 4aecede69..06c082036 100644
--- a/src/gmp_op.c
+++ b/src/gmp_op.c
@@ -466,8 +466,12 @@ mpfr_cmp_q (mpfr_srcptr x, mpq_srcptr q)
if (MPFR_UNLIKELY (mpq_denref (q) == 0))
{
/* q is an infinity or NaN */
- mpfr_init2 (t, 2);
+ mpfr_flags_t old_flags;
+
+ mpfr_init2 (t, MPFR_PREC_MIN);
+ old_flags = __gmpfr_flags;
mpfr_set_q (t, q, MPFR_RNDN);
+ __gmpfr_flags = old_flags;
res = mpfr_cmp (x, t);
mpfr_clear (t);
return res;