1diff -urEb boost_1_69_0.orig/boost/move/adl_move_swap.hpp boost_1_69_0/boost/move/adl_move_swap.hpp 2--- boost_1_69_0.orig/boost/move/adl_move_swap.hpp 2019-02-22 15:05:32.682359994 +0100 3+++ boost_1_69_0/boost/move/adl_move_swap.hpp 2019-02-22 15:05:48.426358034 +0100 4@@ -28,6 +28,8 @@ 5 //Try to avoid including <algorithm>, as it's quite big 6 #if defined(_MSC_VER) && defined(BOOST_DINKUMWARE_STDLIB) 7 #include <utility> //Dinkum libraries define std::swap in utility which is lighter than algorithm 8+#elif defined(__LSB_VERSION__) 9+# include <utility> 10 #elif defined(BOOST_GNU_STDLIB) 11 //For non-GCC compilers, where GNUC version is not very reliable, or old GCC versions 12 //use the good old stl_algobase header, which is quite lightweight 13diff -urEb boost_1_69_0.orig/boost/system/detail/system_category_win32.hpp boost_1_69_0/boost/system/detail/system_category_win32.hpp 14--- boost_1_69_0.orig/boost/system/detail/system_category_win32.hpp 2019-02-22 15:05:32.722359989 +0100 15+++ boost_1_69_0/boost/system/detail/system_category_win32.hpp 2019-02-22 15:06:31.922352713 +0100 16@@ -26,7 +26,7 @@ 17 namespace detail 18 { 19 20-#if ( defined(_MSC_VER) && _MSC_VER < 1900 ) || ( defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) ) 21+#if ( defined(_MSC_VER) && _MSC_VER < 1900 ) || ( defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) ) || 1 /* std::snprintf() does not seem to exist on Visual Studio 2015 */ 22 23 inline char const * unknown_message_win32( int ev, char * buffer, std::size_t len ) 24 { 25diff -urEb boost_1_69_0.orig/boost/thread/detail/config.hpp boost_1_69_0/boost/thread/detail/config.hpp 26--- boost_1_69_0.orig/boost/thread/detail/config.hpp 2019-02-22 15:05:32.598360004 +0100 27+++ boost_1_69_0/boost/thread/detail/config.hpp 2019-02-22 15:05:48.426358034 +0100 28@@ -418,7 +418,7 @@ 29 #define BOOST_THREAD_INTERNAL_CLOCK_IS_MONO 30 #elif defined(BOOST_THREAD_CHRONO_MAC_API) 31 #define BOOST_THREAD_HAS_MONO_CLOCK 32-#elif defined(__ANDROID__) 33+#elif defined(__ANDROID__) || defined(__LSB_VERSION__) 34 #define BOOST_THREAD_HAS_MONO_CLOCK 35 #if defined(__ANDROID_API__) && __ANDROID_API__ >= 21 36 #define BOOST_THREAD_INTERNAL_CLOCK_IS_MONO 37diff -urEb boost_1_69_0.orig/boost/type_traits/detail/has_postfix_operator.hpp boost_1_69_0/boost/type_traits/detail/has_postfix_operator.hpp 38--- boost_1_69_0.orig/boost/type_traits/detail/has_postfix_operator.hpp 2019-02-22 15:05:32.650359998 +0100 39+++ boost_1_69_0/boost/type_traits/detail/has_postfix_operator.hpp 2019-02-22 15:05:48.426358034 +0100 40@@ -85,8 +85,11 @@ 41 namespace boost { 42 namespace detail { 43 44+// https://stackoverflow.com/a/15474269 45+#ifndef Q_MOC_RUN 46 // This namespace ensures that argument-dependent name lookup does not mess things up. 47 namespace BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl) { 48+#endif 49 50 // 1. a function to have an instance of type T without requiring T to be default 51 // constructible 52@@ -234,7 +237,9 @@ 53 BOOST_STATIC_CONSTANT(bool, value = (trait_impl1 < Lhs_noref, Ret, BOOST_TT_FORBIDDEN_IF >::value)); 54 }; 55 56+#ifndef Q_MOC_RUN 57 } // namespace impl 58+#endif 59 } // namespace detail 60 61 // this is the accessible definition of the trait to end user 62diff -urEb boost_1_69_0.orig/boost/type_traits/detail/has_prefix_operator.hpp boost_1_69_0/boost/type_traits/detail/has_prefix_operator.hpp 63--- boost_1_69_0.orig/boost/type_traits/detail/has_prefix_operator.hpp 2019-02-22 15:05:32.650359998 +0100 64+++ boost_1_69_0/boost/type_traits/detail/has_prefix_operator.hpp 2019-02-22 15:05:48.426358034 +0100 65@@ -114,8 +114,11 @@ 66 namespace boost { 67 namespace detail { 68 69+// https://stackoverflow.com/a/15474269 70+#ifndef Q_MOC_RUN 71 // This namespace ensures that argument-dependent name lookup does not mess things up. 72 namespace BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl) { 73+#endif 74 75 // 1. a function to have an instance of type T without requiring T to be default 76 // constructible 77@@ -263,7 +266,9 @@ 78 BOOST_STATIC_CONSTANT(bool, value = (trait_impl1 < Rhs_noref, Ret, BOOST_TT_FORBIDDEN_IF >::value)); 79 }; 80 81+#ifndef Q_MOC_RUN 82 } // namespace impl 83+#endif 84 } // namespace detail 85 86 // this is the accessible definition of the trait to end user 87diff -urEb boost_1_69_0.orig/libs/filesystem/src/operations.cpp boost_1_69_0/libs/filesystem/src/operations.cpp 88--- boost_1_69_0.orig/libs/filesystem/src/operations.cpp 2019-02-22 15:05:32.566360008 +0100 89+++ boost_1_69_0/libs/filesystem/src/operations.cpp 2019-02-22 18:04:17.346573047 +0100 90@@ -2111,9 +2111,16 @@ 91 std::size_t path_size (0); // initialization quiets gcc warning (ticket #3509) 92 error_code ec = path_max(path_size); 93 if (ec)return ec; 94- dirent de; 95- buffer = std::malloc((sizeof(dirent) - sizeof(de.d_name)) 96- + path_size + 1); // + 1 for "/0" 97+ 98+ // Fixed possible use of uninitialized dirent::d_type in dir_iterator 99+ // https://github.com/boostorg/filesystem/commit/bbe9d1771e5d679b3f10c42a58fc81f7e8c024a9 100+ const std::size_t buffer_size = (sizeof(dirent) - sizeof(dirent().d_name)) 101+ + path_size + 1; // + 1 for "\0" 102+ buffer = std::malloc(buffer_size); 103+ if (BOOST_UNLIKELY(!buffer)) 104+ return make_error_code(boost::system::errc::not_enough_memory); 105+ std::memset(buffer, 0, buffer_size); 106+ 107 return ok; 108 } 109 110@@ -2142,6 +2149,13 @@ 111 *result = 0; 112 if ((p = ::readdir(dirp))== 0) 113 return errno; 114+ 115+ // Fixed possible use of uninitialized dirent::d_type in dir_iterator 116+ // https://github.com/boostorg/filesystem/commit/bbe9d1771e5d679b3f10c42a58fc81f7e8c024a9 117+# ifdef BOOST_FILESYSTEM_STATUS_CACHE 118+ entry->d_type = p->d_type; 119+# endif 120+ 121 std::strcpy(entry->d_name, p->d_name); 122 *result = entry; 123 return 0; 124