From 5ecd46bab07561758e0c37a9178e74175e989bdf Mon Sep 17 00:00:00 2001 From: Alon Bar-Lev 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 include without guard. Fails when compiling within extern "C". a.cxx --- extern "C" { #include } --- 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 ^~~~~~~~ a.cxx:3:1: note: ‘extern "C"’ linkage started here extern "C" { ^~~~~~~~~~ --- Found by usage of xmlsec. Signed-off-by: Alon Bar-Lev --- 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 +} +#endif U_NAMESPACE_BEGIN