diff options
author | Sam James <sam@gentoo.org> | 2022-11-22 18:49:54 +0000 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2022-11-22 18:50:03 +0000 |
commit | bb48158fa851ab5f552b125de478a60b5bef65f7 (patch) | |
tree | 902e5a4f808aba5fabc36147649b5cd80091e89f /dev-libs/mpfr | |
parent | media-gfx/libimagequant: Keyword 4.0.4 s390, #866668 (diff) | |
download | gentoo-bb48158fa851ab5f552b125de478a60b5bef65f7.tar.gz gentoo-bb48158fa851ab5f552b125de478a60b5bef65f7.tar.bz2 gentoo-bb48158fa851ab5f552b125de478a60b5bef65f7.zip |
dev-libs/mpfr: backport mpfr_custom_get_kind macro fix
Closes: https://bugs.gentoo.org/881995
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'dev-libs/mpfr')
-rw-r--r-- | dev-libs/mpfr/files/mpfr-4.1.1-fix-mpfr_custom_get_kind.patch | 79 | ||||
-rw-r--r-- | dev-libs/mpfr/mpfr-4.1.1-r1.ebuild (renamed from dev-libs/mpfr/mpfr-4.1.1.ebuild) | 1 |
2 files changed, 80 insertions, 0 deletions
diff --git a/dev-libs/mpfr/files/mpfr-4.1.1-fix-mpfr_custom_get_kind.patch b/dev-libs/mpfr/files/mpfr-4.1.1-fix-mpfr_custom_get_kind.patch new file mode 100644 index 000000000000..d2521f2fa632 --- /dev/null +++ b/dev-libs/mpfr/files/mpfr-4.1.1-fix-mpfr_custom_get_kind.patch @@ -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 <vincent@vinc17.net> +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 diff --git a/dev-libs/mpfr/mpfr-4.1.1.ebuild b/dev-libs/mpfr/mpfr-4.1.1-r1.ebuild index 13392ae4cf60..e34c78ab5b44 100644 --- a/dev-libs/mpfr/mpfr-4.1.1.ebuild +++ b/dev-libs/mpfr/mpfr-4.1.1-r1.ebuild @@ -47,6 +47,7 @@ PATCHES=( "${MY_PATCHES[@]}" # Additional patches + "${FILESDIR}"/${P}-fix-mpfr_custom_get_kind.patch ) HTML_DOCS=( doc/FAQ.html ) |