blob: 618a425412777735671b3bbffa052d9e7a68cc22 (
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
50
51
52
|
From 5ecd46bab07561758e0c37a9178e74175e989bdf Mon Sep 17 00:00:00 2001
From: Alon Bar-Lev <alon.barlev@gmail.com>
Date: Sat, 30 Mar 2019 09:59:46 +0300
Subject: [PATCH] ICU-20530 Guard memory include for C++
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Introduce by ICU-20357, commit b7a3571b adding <memory> include without guard.
Fails when compiling within extern "C".
a.cxx
---
extern "C" {
#include <unicode/localpointer.h>
}
---
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/include/g++-v8/memory:84,
from /tmp/icu/icu4c/source/common/unicode/localpointer.h:45,
from a.cxx:4:
/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/include/g++-v8/backward/auto_ptr.h:325:3: error: template with C linkage
template<typename _Tp, typename _Dp>
^~~~~~~~
a.cxx:3:1: note: ‘extern "C"’ linkage started here
extern "C" {
^~~~~~~~~~
---
Found by usage of xmlsec.
Signed-off-by: Alon Bar-Lev <alon.barlev@gmail.com>
---
icu4c/source/common/unicode/localpointer.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/icu4c/source/common/unicode/localpointer.h b/icu4c/source/common/unicode/localpointer.h
index e011688b1a5..8e35ded0b10 100644
--- a/common/unicode/localpointer.h
+++ b/common/unicode/localpointer.h
@@ -42,7 +42,11 @@
#if U_SHOW_CPLUSPLUS_API
+#ifdef __cplusplus
+extern "C++" {
#include <memory>
+}
+#endif
U_NAMESPACE_BEGIN
|