forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
dev-libs/mpfr: backport mpfr_custom_get_kind macro fix
Closes: https://bugs.gentoo.org/881995 Signed-off-by: Sam James <[email protected]>
- Loading branch information
1 parent
6c3e73c
commit bb48158
Showing
2 changed files
with
80 additions
and
0 deletions.
There are no files selected for viewing
79 changes: 79 additions & 0 deletions
79
dev-libs/mpfr/files/mpfr-4.1.1-fix-mpfr_custom_get_kind.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
https://bugs.gentoo.org/881995 | ||
https://gitlab.inria.fr/mpfr/mpfr/-/commit/3cd39bc0b71ad2fb2ab5252ad9268b14603e3ce6 | ||
https://gitlab.inria.fr/mpfr/mpfr/-/issues/1 | ||
https://github.com/CGAL/cgal/issues/7064 | ||
|
||
From 3cd39bc0b71ad2fb2ab5252ad9268b14603e3ce6 Mon Sep 17 00:00:00 2001 | ||
From: Vincent Lefevre <[email protected]> | ||
Date: Tue, 22 Nov 2022 16:33:00 +0100 | ||
Subject: [PATCH] Fix mpfr_custom_get_kind() macro bug. | ||
|
||
* src/mpfr.h: in the mpfr_custom_get_kind() macro, changed mpfr_ptr to | ||
mpfr_srcptr for _x to agree with the function prototype, in order to | ||
avoid a compilation failure of user code in some cases. This bug was | ||
introduced by commit 9f94e0311ed53d0c64d4fbca249d19cc4888027e, which | ||
introduced the temporary variable _x to avoid an incorrect number of | ||
evaluations of the x argument. | ||
* tests/tstckintc.c: improved the tests to detect this bug. | ||
|
||
This should fix mpfr bug #1. | ||
|
||
Bug initially reported by FX Coudert: | ||
https://github.com/CGAL/cgal/issues/7064 | ||
|
||
It affects Fedora Linux: | ||
https://bugzilla.redhat.com/show_bug.cgi?id=2144197 | ||
|
||
(cherry picked from commit 0ce17bae34a6c54de31b126f969d3ddd72c6bc37) | ||
--- a/src/mpfr.h | ||
+++ b/src/mpfr.h | ||
@@ -1027,7 +1027,7 @@ __MPFR_DECLSPEC int mpfr_total_order_p (mpfr_srcptr, mpfr_srcptr); | ||
#if __GNUC__ > 2 || __GNUC_MINOR__ >= 95 | ||
#define mpfr_custom_get_kind(x) \ | ||
__extension__ ({ \ | ||
- mpfr_ptr _x = (x); \ | ||
+ mpfr_srcptr _x = (x); \ | ||
_x->_mpfr_exp > __MPFR_EXP_INF ? \ | ||
(mpfr_int) MPFR_REGULAR_KIND * MPFR_SIGN (_x) \ | ||
: _x->_mpfr_exp == __MPFR_EXP_INF ? \ | ||
--- a/tests/tstckintc.c | ||
+++ b/tests/tstckintc.c | ||
@@ -295,14 +295,16 @@ static void | ||
test_nan_inf_zero (void) | ||
{ | ||
mpfr_ptr val; | ||
+ mpfr_srcptr sval; /* for compilation error checking */ | ||
int sign; | ||
int kind; | ||
|
||
reset_stack (); | ||
|
||
val = new_mpfr (MPFR_PREC_MIN); | ||
+ sval = val; | ||
mpfr_set_nan (val); | ||
- kind = (mpfr_custom_get_kind) (val); | ||
+ kind = (mpfr_custom_get_kind) (sval); | ||
if (kind != MPFR_NAN_KIND) | ||
{ | ||
printf ("mpfr_custom_get_kind error: "); | ||
@@ -380,7 +382,8 @@ static long * | ||
dummy_set_si (long si) | ||
{ | ||
mpfr_t x; | ||
- long * r = dummy_new (); | ||
+ mpfr_srcptr px; /* for compilation error checking */ | ||
+ long *r = dummy_new (); | ||
int i1, i2, i3, i4, i5; | ||
|
||
/* Check that the type "void *" can be used, like with the function. | ||
@@ -405,7 +408,8 @@ dummy_set_si (long si) | ||
MPFR_ASSERTN (i5 == 1); | ||
|
||
mpfr_set_si (x, si, MPFR_RNDN); | ||
- r[0] = mpfr_custom_get_kind (x); | ||
+ px = x; | ||
+ r[0] = mpfr_custom_get_kind (px); | ||
|
||
/* Check that the type "void *" can be used in C, like with the function | ||
(forbidden in C++). Also check side effects. */ | ||
GitLab |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters