From 8f9c0a44bd27594a42a3bf28eab605e4898c717c Mon Sep 17 00:00:00 2001 From: Marcel Raad Date: Fri, 17 Feb 2017 12:13:08 +0100 Subject: [PATCH] Fix unresolved symbols with MSVC12 and /Zc:inline In #726 and #813, linking errors with MSVC14 were resolved. The change in MSVC12 leading to these errors was not a newly introduced bug, but that /Zc:inline was made on by default. This option is also available with MSVC12, so the workaround should be applied for it too. --- src/google/protobuf/message.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/google/protobuf/message.cc b/src/google/protobuf/message.cc index b799dead0d..6800e4cd55 100644 --- a/src/google/protobuf/message.cc +++ b/src/google/protobuf/message.cc @@ -451,8 +451,8 @@ struct ShutdownRepeatedFieldRegister { namespace internal { template<> -#if defined(_MSC_VER) && (_MSC_VER >= 1900) -// Note: force noinline to workaround MSVC 2015 compiler bug, issue #240 +#if defined(_MSC_VER) && (_MSC_VER >= 1800) +// Note: force noinline to workaround MSVC compiler bug with /Zc:inline, issue #240 GOOGLE_ATTRIBUTE_NOINLINE #endif Message* GenericTypeHandler::NewFromPrototype( @@ -460,8 +460,8 @@ Message* GenericTypeHandler::NewFromPrototype( return prototype->New(arena); } template<> -#if defined(_MSC_VER) && (_MSC_VER >= 1900) -// Note: force noinline to workaround MSVC 2015 compiler bug, issue #240 +#if defined(_MSC_VER) && (_MSC_VER >= 1800) +// Note: force noinline to workaround MSVC compiler bug with /Zc:inline, issue #240 GOOGLE_ATTRIBUTE_NOINLINE #endif google::protobuf::Arena* GenericTypeHandler::GetArena( @@ -469,8 +469,8 @@ google::protobuf::Arena* GenericTypeHandler::GetArena( return value->GetArena(); } template<> -#if defined(_MSC_VER) && (_MSC_VER >= 1900) -// Note: force noinline to workaround MSVC 2015 compiler bug, issue #240 +#if defined(_MSC_VER) && (_MSC_VER >= 1800) +// Note: force noinline to workaround MSVC compiler bug with /Zc:inline, issue #240 GOOGLE_ATTRIBUTE_NOINLINE #endif void* GenericTypeHandler::GetMaybeArenaPointer(