diff options
-rw-r--r-- | appveyor.yml | 8 | ||||
-rw-r--r-- | src/google/protobuf/generated_message_util.h | 9 |
2 files changed, 14 insertions, 3 deletions
diff --git a/appveyor.yml b/appveyor.yml index 02e0d313..9644e066 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,6 +1,3 @@ -# Only test one combination: "Visual Studio 12 + Win64 + Debug + DLL". We can -# test more combinations but AppVeyor just takes too long to finish (each -# combination takes ~15mins). platform: - Win64 @@ -14,6 +11,11 @@ environment: BUILD_DLL: ON UNICODE: ON + - language: cpp + image: Visual Studio 2017 + BUILD_DLL: OFF + UNICODE: ON + - language: csharp image: Visual Studio 2017 diff --git a/src/google/protobuf/generated_message_util.h b/src/google/protobuf/generated_message_util.h index c26e3e52..706df383 100644 --- a/src/google/protobuf/generated_message_util.h +++ b/src/google/protobuf/generated_message_util.h @@ -335,7 +335,16 @@ struct LIBPROTOBUF_EXPORT SCCInfoBase { kRunning = 1, kUninitialized = -1, // initial state }; +#ifndef _MSC_VER std::atomic<int> visit_status; +#else + // MSVC doesnt make std::atomic constant initialized. This union trick + // makes it so. + union { + int visit_status_to_make_linker_init; + std::atomic<int> visit_status; + }; +#endif int num_deps; void (*init_func)(); // This is followed by an array of num_deps |