diff options
Diffstat (limited to 'chromium/chromium/chromium-gcc-12-r1197890.patch')
-rw-r--r-- | chromium/chromium/chromium-gcc-12-r1197890.patch | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/chromium/chromium/chromium-gcc-12-r1197890.patch b/chromium/chromium/chromium-gcc-12-r1197890.patch new file mode 100644 index 0000000..59152ea --- /dev/null +++ b/chromium/chromium/chromium-gcc-12-r1197890.patch @@ -0,0 +1,126 @@ +From 3a05767c2bbba5ee75c9adf0a5971258405520a8 Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz <jdapena@igalia.com> +Date: Mon, 18 Sep 2023 17:18:31 +0000 +Subject: [PATCH] GCC: workaround constexpr and raw_ptr issues in autofill +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +First, we workaround the problem with some constexpr destructors +declared to use default implementation, that are not properly +resolved when used. + +Then, apparently GCC cannot resolve raw_ptr to a constexpr. + +Bug: 819294 +Change-Id: I7746e059a288a3250e8126b87bde5f96c3832199 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4866025 +Commit-Queue: José Dapena Paz <jdapena@igalia.com> +Reviewed-by: Dominic Battre <battre@chromium.org> +Cr-Commit-Position: refs/heads/main@{#1197890} +--- + ...tofill_i18n_parsing_expression_components.h | 18 +++++++++++++----- + .../autofill_i18n_parsing_expressions.h | 2 +- + 2 files changed, 14 insertions(+), 6 deletions(-) + +diff --git a/components/autofill/core/browser/data_model/autofill_i18n_parsing_expression_components.h b/components/autofill/core/browser/data_model/autofill_i18n_parsing_expression_components.h +index fcc3f168bf231..2609de2f4284f 100644 +--- a/components/autofill/core/browser/data_model/autofill_i18n_parsing_expression_components.h ++++ b/components/autofill/core/browser/data_model/autofill_i18n_parsing_expression_components.h +@@ -39,7 +39,7 @@ class AutofillParsingProcess { + AutofillParsingProcess(const AutofillParsingProcess& other) = delete; + AutofillParsingProcess& operator=(const AutofillParsingProcess& right) = + delete; +- virtual ~AutofillParsingProcess() = default; ++ virtual constexpr ~AutofillParsingProcess() = default; + + // Parses `value` and returns the extracted field type matches. + virtual ValueParsingResults Parse(std::string_view value) const = 0; +@@ -60,7 +60,7 @@ class Decomposition : public AutofillParsingProcess { + anchor_end_(anchor_end) {} + Decomposition(const Decomposition&) = delete; + Decomposition& operator=(const Decomposition&) = delete; +- ~Decomposition() override = default; ++ constexpr ~Decomposition() override; + + ValueParsingResults Parse(std::string_view value) const override; + +@@ -70,6 +70,8 @@ class Decomposition : public AutofillParsingProcess { + const bool anchor_end_ = true; + }; + ++constexpr Decomposition::~Decomposition() = default; ++ + // A DecompositionCascade enables us to try one Decomposition after the next + // until we have found a match. It can be fitted with a condition to only use it + // in case the condition is fulfilled. The lack of a condition is expressed by +@@ -84,7 +86,7 @@ class DecompositionCascade : public AutofillParsingProcess { + : condition_regex_(condition_regex), alternatives_(alternatives) {} + DecompositionCascade(const DecompositionCascade&) = delete; + DecompositionCascade& operator=(const DecompositionCascade&) = delete; +- ~DecompositionCascade() override = default; ++ constexpr ~DecompositionCascade() override; + + ValueParsingResults Parse(std::string_view value) const override; + +@@ -93,6 +95,8 @@ class DecompositionCascade : public AutofillParsingProcess { + const base::span<const AutofillParsingProcess* const> alternatives_; + }; + ++constexpr DecompositionCascade::~DecompositionCascade() = default; ++ + // An ExtractPart parsing process attempts to match a string to a + // parsing expression, and then extracts the captured field type values. It can + // be fitted with a condition to only use it in case the condition is fulfilled. +@@ -110,7 +114,7 @@ class ExtractPart : public AutofillParsingProcess { + + ExtractPart(const ExtractPart&) = delete; + ExtractPart& operator=(const ExtractPart&) = delete; +- ~ExtractPart() override = default; ++ constexpr ~ExtractPart() override; + + ValueParsingResults Parse(std::string_view value) const override; + +@@ -119,6 +123,8 @@ class ExtractPart : public AutofillParsingProcess { + const std::string_view parsing_regex_; + }; + ++constexpr ExtractPart::~ExtractPart() = default; ++ + // Unlike for a DecompositionCascade, ExtractParts does not follow the "the + // first match wins" principle but applies all matching attempts in sequence so + // the last match wins. This also enables extracting different data (e.g. an +@@ -134,7 +140,7 @@ class ExtractParts : public AutofillParsingProcess { + : condition_regex_(condition_regex), pieces_(pieces) {} + ExtractParts(const ExtractParts&) = delete; + ExtractParts& operator=(const ExtractParts&) = delete; +- ~ExtractParts() override = default; ++ constexpr ~ExtractParts() override; + + ValueParsingResults Parse(std::string_view value) const override; + +@@ -143,6 +149,8 @@ class ExtractParts : public AutofillParsingProcess { + const base::span<const ExtractPart* const> pieces_; + }; + ++constexpr ExtractParts::~ExtractParts() = default; ++ + } // namespace autofill::i18n_model_definition + + #endif // COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_AUTOFILL_I18N_PARSING_EXPRESSION_COMPONENTS_H_ +diff --git a/components/autofill/core/browser/data_model/autofill_i18n_parsing_expressions.h b/components/autofill/core/browser/data_model/autofill_i18n_parsing_expressions.h +index af0c4b0e90866..02b1a240ec9d5 100644 +--- a/components/autofill/core/browser/data_model/autofill_i18n_parsing_expressions.h ++++ b/components/autofill/core/browser/data_model/autofill_i18n_parsing_expressions.h +@@ -174,7 +174,7 @@ constexpr ExtractParts kExtractParts_7 = ExtractParts("", kExtractParts_7_Pieces + + // A lookup map for parsing expressions for countries and field types. + constexpr auto kAutofillParsingRulesMap = +- base::MakeFixedFlatMap<CountryAndFieldType, raw_ptr<const AutofillParsingProcess>>({ ++ base::MakeFixedFlatMap<CountryAndFieldType, const AutofillParsingProcess*>({ + {{"BR", NAME_FULL}, &kDecompositionCascade_3}, + {{"BR", ADDRESS_HOME_STREET_LOCATION}, &kDecompositionList[8]}, + {{"BR", ADDRESS_HOME_SUBPREMISE}, &kExtractParts_0}, +-- +2.41.0 + |