diff options
Diffstat (limited to 'chromium/chromium/chromium-gcc9-r772175.patch')
-rw-r--r-- | chromium/chromium/chromium-gcc9-r772175.patch | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/chromium/chromium/chromium-gcc9-r772175.patch b/chromium/chromium/chromium-gcc9-r772175.patch new file mode 100644 index 0000000..3ebbb98 --- /dev/null +++ b/chromium/chromium/chromium-gcc9-r772175.patch @@ -0,0 +1,76 @@ +From 911bdcd8cc5475be4ec4228cfbc85fc38f52857e Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <stha09@googlemail.com> +Date: Wed, 27 May 2020 10:00:41 +0000 +Subject: [PATCH] GCC: make base::{flat_map,flat_tree} move assignement + operators noexcept +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Move assigment operator in ui::ColorSet is noexcept. Because this +class has a member of type base::flat_map, move assignment operators +of base::flat_map and base::flat_tree must be noexcept too. +base::flat_tree noexcept is conditional to avoid build failure with +NaCl. + +Otherwise GCC fails like this: + +../../ui/color/color_set.cc:14:11: error: function +'ui::ColorSet& ui::ColorSet::operator=(ui::ColorSet&&)' defaulted on its +redeclaration with an exception-specification that differs from the +implicit exception-specification '' + 14 | ColorSet& ColorSet::operator=(ColorSet&&) noexcept = default; + | ^~~~~~~~ + +Bug: 819294 +Change-Id: I10ce31851effc9ce78f2b5cbbb7148c339f065a7 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2179245 +Commit-Queue: Jan Wilken Dörrie <jdoerrie@chromium.org> +Reviewed-by: Daniel Cheng <dcheng@chromium.org> +Cr-Commit-Position: refs/heads/master@{#772175} +--- + base/containers/flat_map.h | 2 +- + base/containers/flat_tree.h | 7 +++++-- + 2 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/base/containers/flat_map.h b/base/containers/flat_map.h +index ed82c5d516c8..1af6b407a52d 100644 +--- a/base/containers/flat_map.h ++++ b/base/containers/flat_map.h +@@ -202,7 +202,7 @@ class flat_map : public ::base::internal::flat_tree< + ~flat_map() = default; + + flat_map& operator=(const flat_map&) = default; +- flat_map& operator=(flat_map&&) = default; ++ flat_map& operator=(flat_map&&) noexcept = default; + // Takes the first if there are duplicates in the initializer list. + flat_map& operator=(std::initializer_list<value_type> ilist); + +diff --git a/base/containers/flat_tree.h b/base/containers/flat_tree.h +index 9412ff6af749..ce6e92b4d363 100644 +--- a/base/containers/flat_tree.h ++++ b/base/containers/flat_tree.h +@@ -125,7 +125,8 @@ class flat_tree { + // Assume that move assignment invalidates iterators and references. + + flat_tree& operator=(const flat_tree&); +- flat_tree& operator=(flat_tree&&); ++ flat_tree& operator=(flat_tree&&) noexcept( ++ std::is_nothrow_move_assignable<underlying_type>::value); + // Takes the first if there are duplicates in the initializer list. + flat_tree& operator=(std::initializer_list<value_type> ilist); + +@@ -518,7 +519,9 @@ auto flat_tree<Key, Value, GetKeyFromValue, KeyCompare>::operator=( + const flat_tree&) -> flat_tree& = default; + + template <class Key, class Value, class GetKeyFromValue, class KeyCompare> +-auto flat_tree<Key, Value, GetKeyFromValue, KeyCompare>::operator=(flat_tree &&) ++auto flat_tree<Key, Value, GetKeyFromValue, KeyCompare>:: ++operator=(flat_tree&&) noexcept( ++ std::is_nothrow_move_assignable<underlying_type>::value) + -> flat_tree& = default; + + template <class Key, class Value, class GetKeyFromValue, class KeyCompare> +-- +2.26.2 + |