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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
https://gitlab.onelab.info/gmsh/gmsh/-/commit/e7cd675083f72c6c01701cb0f16d1639aca121ba
https://bugs.gentoo.org/800536
From: Tristan Carel <tristan.carel@epfl.ch>
Date: Wed, 28 Jul 2021 10:55:40 +0200
Subject: [PATCH] Fix symbol conflict in picojson with GCC 11 internal macro
Build issue on MacOS with GCC 11 from brew:
```
/usr/local/Cellar/gcc/11.1.0_1/lib/gcc/11/gcc/x86_64-apple-darwin20/11.1.0/include/serializeintrin.h:37: note: macro "_serialize" defined here
37 | #define _serialize() __builtin_ia32_serialize ()
|
```
--- a/Common/picojson.h
+++ b/Common/picojson.h
@@ -186,8 +186,8 @@ public:
private:
template <typename T> value(const T *); // intentionally defined to block implicit conversion of pointer to bool
template <typename Iter> static void _indent(Iter os, int indent);
- template <typename Iter> void _serialize(Iter os, int indent) const;
- std::string _serialize(int indent) const;
+ template <typename Iter> void serialize_(Iter os, int indent) const;
+ std::string serialize_(int indent) const;
void clear();
};
@@ -549,11 +549,11 @@ template <typename Iter> void serialize_str(const std::string &s, Iter oi) {
}
template <typename Iter> void value::serialize(Iter oi, bool prettify) const {
- return _serialize(oi, prettify ? 0 : -1);
+ return serialize_(oi, prettify ? 0 : -1);
}
inline std::string value::serialize(bool prettify) const {
- return _serialize(prettify ? 0 : -1);
+ return serialize_(prettify ? 0 : -1);
}
template <typename Iter> void value::_indent(Iter oi, int indent) {
@@ -563,7 +563,7 @@ template <typename Iter> void value::_indent(Iter oi, int indent) {
}
}
-template <typename Iter> void value::_serialize(Iter oi, int indent) const {
+template <typename Iter> void value::serialize_(Iter oi, int indent) const {
switch (type_) {
case string_type:
serialize_str(*u_.string_, oi);
@@ -580,7 +580,7 @@ template <typename Iter> void value::_serialize(Iter oi, int indent) const {
if (indent != -1) {
_indent(oi, indent);
}
- i->_serialize(oi, indent);
+ i->serialize_(oi, indent);
}
if (indent != -1) {
--indent;
@@ -608,7 +608,7 @@ template <typename Iter> void value::_serialize(Iter oi, int indent) const {
if (indent != -1) {
*oi++ = ' ';
}
- i->second._serialize(oi, indent);
+ i->second.serialize_(oi, indent);
}
if (indent != -1) {
--indent;
@@ -628,9 +628,9 @@ template <typename Iter> void value::_serialize(Iter oi, int indent) const {
}
}
-inline std::string value::_serialize(int indent) const {
+inline std::string value::serialize_(int indent) const {
std::string s;
- _serialize(std::back_inserter(s), indent);
+ serialize_(std::back_inserter(s), indent);
return s;
}
GitLab
|