commit:     1c7a04ecf47d2ec93dc6acc13d8d2dbe78ded1ce
Author:     Viorel Munteanu <ceamac <AT> gentoo <DOT> org>
AuthorDate: Mon Jan  2 16:23:03 2023 +0000
Commit:     Viorel Munteanu <ceamac <AT> gentoo <DOT> org>
CommitDate: Mon Jan  2 16:29:39 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1c7a04ec

media-libs/netpbm: fix compilation with clang -O2

Closes: https://bugs.gentoo.org/885561
Signed-off-by: Viorel Munteanu <ceamac <AT> gentoo.org>

 .../netpbm/files/netpbm-11.1.0-fix-clang-O2.patch  | 26 ++++++++++++++++++++++
 ...etpbm-11.1.0.ebuild => netpbm-11.1.0-r1.ebuild} |  5 ++---
 2 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/media-libs/netpbm/files/netpbm-11.1.0-fix-clang-O2.patch 
b/media-libs/netpbm/files/netpbm-11.1.0-fix-clang-O2.patch
new file mode 100644
index 000000000000..4427676b9b35
--- /dev/null
+++ b/media-libs/netpbm/files/netpbm-11.1.0-fix-clang-O2.patch
@@ -0,0 +1,26 @@
+When compiling with clang and -O2, local variable origJmpbufP with value
+changed after setjmp contains garbage after longjmp.
+
+According to glibc documentation, making it volatile should have fixed the
+issue, but it didn't.  Static outside the function works.
+
+Bug: https://bugs.gentoo.org/885561
+
+--- a/lib/libpamread.c
++++ b/lib/libpamread.c
+@@ -25,6 +25,7 @@
+ #include "fileio.h"
+ #include "pam.h"
+ 
++static jmp_buf * origJmpbufP = NULL;
+ 
+ static void
+ readPbmRow(const struct pam * const pamP,
+@@ -35,7 +36,6 @@
+                  "It says PBM format, but 'depth' member is not 1.");
+     else {
+         jmp_buf jmpbuf;
+-        jmp_buf * origJmpbufP;
+         unsigned char * bitrow;
+ 
+         bitrow = (unsigned char *) 
pbm_allocrow(pbm_packed_bytes(pamP->width));

diff --git a/media-libs/netpbm/netpbm-11.1.0.ebuild 
b/media-libs/netpbm/netpbm-11.1.0-r1.ebuild
similarity index 98%
rename from media-libs/netpbm/netpbm-11.1.0.ebuild
rename to media-libs/netpbm/netpbm-11.1.0-r1.ebuild
index 7d44b7a5bd79..321a76b14293 100644
--- a/media-libs/netpbm/netpbm-11.1.0.ebuild
+++ b/media-libs/netpbm/netpbm-11.1.0-r1.ebuild
@@ -42,16 +42,14 @@ RDEPEND="
        )
        rle? ( media-libs/urt:= )
        svga? ( media-libs/svgalib )
-       tiff? ( >=media-libs/tiff-3.5.5:= )
+       tiff? ( media-libs/tiff )
        xml? ( dev-libs/libxml2 )
        X? ( x11-libs/libX11 )
 "
-
 DEPEND="
        ${RDEPEND}
        x11-base/xorg-proto
 "
-
 BDEPEND="
        app-arch/xz-utils
        sys-devel/flex
@@ -61,6 +59,7 @@ BDEPEND="
 PATCHES=(
        "${FILESDIR}"/netpbm-10.86.21-build.patch
        "${FILESDIR}"/netpbm-11.0.0-misc-deps.patch
+       "${FILESDIR}"/netpbm-11.1.0-fix-clang-O2.patch
 )
 
 netpbm_libtype() {

Reply via email to