mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-12-31 05:03:22 +08:00
23 lines
1.1 KiB
Diff
23 lines
1.1 KiB
Diff
|
diff --git a/src/google/protobuf/parse_context.h b/src/google/protobuf/parse_context.h
|
||
|
index df12ee1ab..3eb2e56c7 100644
|
||
|
--- a/src/google/protobuf/parse_context.h
|
||
|
+++ b/src/google/protobuf/parse_context.h
|
||
|
@@ -653,7 +653,7 @@ inline const char* VarintParseSlow(const char* p, uint32_t res, uint64_t* out) {
|
||
|
return tmp.first;
|
||
|
}
|
||
|
|
||
|
-#ifdef __aarch64__
|
||
|
+#if defined(__aarch64__) && !defined(_MSC_VER)
|
||
|
// Generally, speaking, the ARM-optimized Varint decode algorithm is to extract
|
||
|
// and concatenate all potentially valid data bits, compute the actual length
|
||
|
// of the Varint, and mask off the data bits which are not actually part of the
|
||
|
@@ -883,7 +883,7 @@ static const char* VarintParseSlowArm(const char* p, uint64_t* out,
|
||
|
|
||
|
template <typename T>
|
||
|
PROTOBUF_NODISCARD const char* VarintParse(const char* p, T* out) {
|
||
|
-#if defined(__aarch64__) && defined(PROTOBUF_LITTLE_ENDIAN)
|
||
|
+#if defined(__aarch64__) && defined(PROTOBUF_LITTLE_ENDIAN) && !defined(_MSC_VER)
|
||
|
// This optimization is not supported in big endian mode
|
||
|
uint64_t first8;
|
||
|
std::memcpy(&first8, p, sizeof(first8));
|