diff options
Diffstat (limited to 'games-emulation')
-rw-r--r-- | games-emulation/dolphin/dolphin-5.0_p20220520-r2.ebuild | 6 | ||||
-rw-r--r-- | games-emulation/dolphin/files/dolphin-5.0_p20220520-gcc-14.patch | 30 |
2 files changed, 35 insertions, 1 deletions
diff --git a/games-emulation/dolphin/dolphin-5.0_p20220520-r2.ebuild b/games-emulation/dolphin/dolphin-5.0_p20220520-r2.ebuild index c1f43ed2cbd5..eb77bc5735c5 100644 --- a/games-emulation/dolphin/dolphin-5.0_p20220520-r2.ebuild +++ b/games-emulation/dolphin/dolphin-5.0_p20220520-r2.ebuild @@ -35,7 +35,11 @@ IUSE=" profile pulseaudio systemd upnp vulkan " -PATCHES=("${FILESDIR}/${P}-libfmt-9.0.0-fix-build.patch") +PATCHES=( + "${FILESDIR}/${P}-libfmt-9.0.0-fix-build.patch" + # https://github.com/dolphin-emu/dolphin/pull/12575 + "${FILESDIR}/${P}-gcc-14.patch" +) RDEPEND=" app-arch/bzip2:= diff --git a/games-emulation/dolphin/files/dolphin-5.0_p20220520-gcc-14.patch b/games-emulation/dolphin/files/dolphin-5.0_p20220520-gcc-14.patch new file mode 100644 index 000000000000..44ffb50ae257 --- /dev/null +++ b/games-emulation/dolphin/files/dolphin-5.0_p20220520-gcc-14.patch @@ -0,0 +1,30 @@ +From 3da2e15e6b95f02f66df461e87c8b896e450fdab Mon Sep 17 00:00:00 2001 +From: Peter Lafreniere <peter@n8pjl.ca> +Date: Sun, 11 Feb 2024 20:55:31 -0500 +Subject: [PATCH] IOFile: avoid clearing errors on null file struct + +When performing a default compilation with recent GCC & glibc, +the use of -Werror=nonnull causes a build error. + +The error is given as IOFile::ClearError() can call std::clearerr() +with a null file, which can trigger a null-pointer dereference in libc. + +Change the std::clearerr() call to be conditional on a file being open. +--- + Source/Core/Common/IOFile.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/Source/Core/Common/IOFile.h b/Source/Core/Common/IOFile.h +index 4b12c3188853..b5895333b1be 100644 +--- a/Source/Core/Common/IOFile.h ++++ b/Source/Core/Common/IOFile.h +@@ -116,7 +116,8 @@ class IOFile + void ClearError() + { + m_good = true; +- std::clearerr(m_file); ++ if (IsOpen()) ++ std::clearerr(m_file); + } + + private: |