summaryrefslogtreecommitdiffstats
path: root/recipes-wam/cef/files/chromium/0018-meta-browser-Fix-undefined-symbol-PaintOpWriter-Seri.patch
blob: 2c953d3b0a47d0cf5bc69996bfa76778946fbe8a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
From 1b8ee706e8bb16a9b6c59c832d33b56915d1f410 Mon Sep 17 00:00:00 2001
From: Max Ihlenfeldt <max@igalia.com>
Date: Tue, 5 Sep 2023 09:51:38 +0000
Subject: [PATCH 18/33] [meta-browser] Fix "undefined symbol:
 PaintOpWriter::SerializedSize<unsigned long>()"

For some reason, clang 14 (currently used on dunfell and kirkstone)
seems to fail to correctly generate a needed instantiation of
`cc::PaintOpWriter::SerializedSize<T>()`, and thus the final linking
step fails with an "undefined symbol" error.

We can fix this by explicitly providing a specialization, which does the
same thing as the generic implementation.

Upstream-Status: Inappropriate [specific to older versions of clang]
Signed-off-by: Max Ihlenfeldt <max@igalia.com>
---
 cc/paint/paint_op_writer.h | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/cc/paint/paint_op_writer.h b/cc/paint/paint_op_writer.h
index 70153c0aa64ac..f47eb934c1eb1 100644
--- a/cc/paint/paint_op_writer.h
+++ b/cc/paint/paint_op_writer.h
@@ -122,6 +122,9 @@ class CC_PAINT_EXPORT PaintOpWriter {
   static size_t SerializedSize(const PaintRecord& record);
   static size_t SerializedSize(const SkHighContrastConfig& config);
 
+  template<>
+  constexpr size_t SerializedSize<size_t>();
+
   // Serialization of raw/smart pointers is not supported by default.
   template <typename T>
   static inline size_t SerializedSize(const T* p);
@@ -385,6 +388,11 @@ constexpr size_t PaintOpWriter::SerializedSize<SkGainmapInfo>() {
          SerializedSizeSimple<uint32_t>();    // fBaseImageType
 }
 
+template<>
+constexpr size_t PaintOpWriter::SerializedSize<size_t>() {
+  return SerializedSizeSimple<size_t>();
+}
+
 template <typename T>
 constexpr size_t PaintOpWriter::SerializedSize() {
   static_assert(std::is_arithmetic_v<T> || std::is_enum_v<T>);
-- 
2.42.1