summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2019-11-15 14:23:47 (GMT)
committerBrad King <brad.king@kitware.com>2019-11-15 14:23:47 (GMT)
commita4c19cb895f6275c5ff1a3991a117df1ad27cf15 (patch)
tree430c5bcd1b98640ac06bd7cce7008130303fe791 /Source
parent0b9f1cc96b5babb10f14781648b02f9a28124cbc (diff)
downloadCMake-a4c19cb895f6275c5ff1a3991a117df1ad27cf15.zip
CMake-a4c19cb895f6275c5ff1a3991a117df1ad27cf15.tar.gz
CMake-a4c19cb895f6275c5ff1a3991a117df1ad27cf15.tar.bz2
Windows: Restore suppression of error report popups in CI builds
On Windows, libuv uses `_CrtSetReportHook` to install a handler it uses to suppress assertions on invalid file descriptors in `_get_osfhandle`. This removes the handler we install in CI environments to suppress interactive popups. Move installation of our handler to after libuv is initialized so that our handler is actually used. Unfortunately this also removes libuv's handler and so may cause Debug builds under CI to abort on invalid file descriptors instead of simply converting them to `INVALID_HANDLE_VALUE`. If this becomes a problem we may need to modify libuv to make its hook more configurable.
Diffstat (limited to 'Source')
-rw-r--r--Source/CPack/cpack.cxx1
-rw-r--r--Source/cmSystemTools.cxx2
-rw-r--r--Source/cmakemain.cxx1
-rw-r--r--Source/ctest.cxx1
4 files changed, 2 insertions, 3 deletions
diff --git a/Source/CPack/cpack.cxx b/Source/CPack/cpack.cxx
index d7868f3..dc31623 100644
--- a/Source/CPack/cpack.cxx
+++ b/Source/CPack/cpack.cxx
@@ -115,7 +115,6 @@ int main(int argc, char const* const* argv)
argc = args.argc();
argv = args.argv();
- cmSystemTools::EnableMSVCDebugHook();
cmSystemTools::InitializeLibUV();
cmSystemTools::FindCMakeResources(argv[0]);
cmCPackLog log;
diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx
index c4a4220..17d32c6 100644
--- a/Source/cmSystemTools.cxx
+++ b/Source/cmSystemTools.cxx
@@ -814,6 +814,8 @@ void cmSystemTools::InitializeLibUV()
# else
_fmode = _O_TEXT;
# endif
+ // Replace libuv's report handler with our own to suppress popups.
+ cmSystemTools::EnableMSVCDebugHook();
#endif
}
diff --git a/Source/cmakemain.cxx b/Source/cmakemain.cxx
index baf975e..d817971 100644
--- a/Source/cmakemain.cxx
+++ b/Source/cmakemain.cxx
@@ -683,7 +683,6 @@ int main(int ac, char const* const* av)
ac = args.argc();
av = args.argv();
- cmSystemTools::EnableMSVCDebugHook();
cmSystemTools::InitializeLibUV();
cmSystemTools::FindCMakeResources(av[0]);
if (ac > 1) {
diff --git a/Source/ctest.cxx b/Source/ctest.cxx
index a7b11cd..a9fcc84 100644
--- a/Source/ctest.cxx
+++ b/Source/ctest.cxx
@@ -164,7 +164,6 @@ int main(int argc, char const* const* argv)
argv = encoding_args.argv();
cmSystemTools::DoNotInheritStdPipes();
- cmSystemTools::EnableMSVCDebugHook();
cmSystemTools::InitializeLibUV();
cmSystemTools::FindCMakeResources(argv[0]);