summaryrefslogtreecommitdiff
path: root/dev-libs/icu/files/icu-64.1-guard-memory-include.patch
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