diff options
Diffstat (limited to 'dev-qt/qtwebengine/files/qtwebengine-6.5.2-libcxx17.patch')
-rw-r--r-- | dev-qt/qtwebengine/files/qtwebengine-6.5.2-libcxx17.patch | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/dev-qt/qtwebengine/files/qtwebengine-6.5.2-libcxx17.patch b/dev-qt/qtwebengine/files/qtwebengine-6.5.2-libcxx17.patch new file mode 100644 index 000000000000..8acbbf4463ce --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-6.5.2-libcxx17.patch @@ -0,0 +1,83 @@ +Patch status: fixed in >=chromium-116.0.5809.0 + +Backport of [2][3] in order to fix building with libcxx-17 +(and hopefully runtime if upgrade from 16->17 without rebuilding). + +In order to apply cleanly, also needed [4] which seems fine to have. + +[1] https://crbug.com/1449299 +[2] https://crrev.com/9bfbbffdba73668fdb483e5a850911d2b64c35d7 +[3] https://crrev.com/4878976cd7391fbc02f87af4b7fb539b5c1f3817 +[4] https://crrev.com/5b5551edd3961481e617e510276b9f015a35b861 +--- a/src/3rdparty/chromium/base/containers/checked_iterators.h ++++ b/src/3rdparty/chromium/base/containers/checked_iterators.h +@@ -24,4 +24,7 @@ + using reference = T&; + using iterator_category = std::random_access_iterator_tag; ++#if defined(__cpp_lib_ranges) ++ using iterator_concept = std::contiguous_iterator_tag; ++#endif + + // Required for converting constructor below. +@@ -31,8 +34,6 @@ + // Required for certain libc++ algorithm optimizations that are not available + // for NaCl. +-#if defined(_LIBCPP_VERSION) && !BUILDFLAG(IS_NACL) + template <typename Ptr> + friend struct std::pointer_traits; +-#endif + + constexpr CheckedContiguousIterator() = default; +@@ -147,4 +148,10 @@ + } + ++ constexpr friend CheckedContiguousIterator operator+( ++ difference_type lhs, ++ const CheckedContiguousIterator& rhs) { ++ return rhs + lhs; ++ } ++ + constexpr CheckedContiguousIterator& operator-=(difference_type rhs) { + if (rhs < 0) { +@@ -218,5 +225,4 @@ + } // namespace base + +-#if defined(_LIBCPP_VERSION) && !BUILDFLAG(IS_NACL) + // Specialize both std::__is_cpp17_contiguous_iterator and std::pointer_traits + // for CCI in case we compile with libc++ outside of NaCl. The former is +@@ -236,11 +242,28 @@ + // [2] https://wg21.link/std.iterator.tags + // [3] https://wg21.link/pointer.traits.optmem +-namespace std { ++ ++#if defined(_LIBCPP_VERSION) ++ ++_LIBCPP_BEGIN_NAMESPACE_STD + + template <typename T> ++struct __is_cpp17_contiguous_iterator; ++template <typename T> + struct __is_cpp17_contiguous_iterator<::base::CheckedContiguousIterator<T>> + : true_type {}; + + template <typename T> ++struct __libcpp_is_contiguous_iterator; ++template <typename T> ++struct __libcpp_is_contiguous_iterator<::base::CheckedContiguousIterator<T>> ++ : true_type {}; ++ ++_LIBCPP_END_NAMESPACE_STD ++ ++#endif ++ ++namespace std { ++ ++template <typename T> + struct pointer_traits<::base::CheckedContiguousIterator<T>> { + using pointer = ::base::CheckedContiguousIterator<T>; +@@ -261,5 +284,4 @@ + + } // namespace std +-#endif + + #endif // BASE_CONTAINERS_CHECKED_ITERATORS_H_ |