commit: 756046b3193fbc055435914b252bed4eabf3c766 Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> AuthorDate: Sat Sep 5 16:10:47 2020 +0000 Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> CommitDate: Sun Sep 6 16:45:36 2020 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=756046b3
dev-util/cmake: Tolerate nullptr from uv_default_loop See also: https://discourse.cmake.org/t/cmake-3-16-5-segmentation-violation/1316 Thanks-to: <tedheadster <AT> gmail.com> Bug: https://bugs.gentoo.org/726962 Package-Manager: Portage-3.0.5, Repoman-3.0.1 Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org> ...{cmake-3.17.4.ebuild => cmake-3.17.4-r1.ebuild} | 1 + .../cmake/files/cmake-3.17.4-uv-check-return.patch | 46 ++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/dev-util/cmake/cmake-3.17.4.ebuild b/dev-util/cmake/cmake-3.17.4-r1.ebuild similarity index 99% rename from dev-util/cmake/cmake-3.17.4.ebuild rename to dev-util/cmake/cmake-3.17.4-r1.ebuild index a65d699eeb8..3af2be355a2 100644 --- a/dev-util/cmake/cmake-3.17.4.ebuild +++ b/dev-util/cmake/cmake-3.17.4-r1.ebuild @@ -67,6 +67,7 @@ PATCHES=( "${FILESDIR}"/${PN}-3.9.0_rc2-FindPythonInterp.patch # upstream fixes (can usually be removed with a version bump) + "${FILESDIR}"/${P}-uv-check-return.patch # bug 726962 ) cmake_src_bootstrap() { diff --git a/dev-util/cmake/files/cmake-3.17.4-uv-check-return.patch b/dev-util/cmake/files/cmake-3.17.4-uv-check-return.patch new file mode 100644 index 00000000000..ab4a45a3ec1 --- /dev/null +++ b/dev-util/cmake/files/cmake-3.17.4-uv-check-return.patch @@ -0,0 +1,46 @@ +From 0fddcc1e5bd8e4672b09e2478edb72e5c0338f1b Mon Sep 17 00:00:00 2001 +From: Brad King <brad.k...@kitware.com> +Date: Wed, 1 Jul 2020 16:23:56 -0400 +Subject: [PATCH] cmake: Tolerate nullptr from uv_default_loop + +`uv_default_loop()` can return `nullptr` when running on a Linux kernel +configured without `CONFIG_EVENTFD`. + +Fixes: #20899 +--- + Source/cmSystemTools.cxx | 4 +++- + Source/cmakemain.cxx | 4 +++- + 2 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx +index be799b0402..2f08b840cd 100644 +--- a/Source/cmSystemTools.cxx ++++ b/Source/cmSystemTools.cxx +@@ -823,7 +823,9 @@ void cmSystemTools::InitializeLibUV() + // Perform libuv one-time initialization now, and then un-do its + // global _fmode setting so that using libuv does not change the + // default file text/binary mode. See libuv issue 840. +- uv_loop_close(uv_default_loop()); ++ if (uv_loop_t* loop = uv_default_loop()) { ++ uv_loop_close(loop); ++ } + # ifdef _MSC_VER + _set_fmode(_O_TEXT); + # else +diff --git a/Source/cmakemain.cxx b/Source/cmakemain.cxx +index 75280fb8a5..e0c17f8d54 100644 +--- a/Source/cmakemain.cxx ++++ b/Source/cmakemain.cxx +@@ -717,6 +717,8 @@ int main(int ac, char const* const* av) + #ifndef CMAKE_BOOTSTRAP + cmDynamicLoader::FlushCache(); + #endif +- uv_loop_close(uv_default_loop()); ++ if (uv_loop_t* loop = uv_default_loop()) { ++ uv_loop_close(loop); ++ } + return ret; + } +-- +GitLab +