A workaround for MSVC 2010 x64 platform bug,

which affects proto compiler in generating field has_bit mask.
pull/3335/head
liujisi@google.com 14 years ago
parent 2a89d0022d
commit cb6dd4ef5f
  1. 7
      src/google/protobuf/stubs/strutil.cc

@ -670,7 +670,14 @@ char *InternalFastHexToBuffer(uint64 value, char* buffer, int num_byte) {
static const char *hexdigits = "0123456789abcdef";
buffer[num_byte] = '\0';
for (int i = num_byte - 1; i >= 0; i--) {
#ifdef _M_X64
// MSVC x64 platform has a bug optimizing the uint32(value) in the #else
// block. Given that the uint32 cast was to improve performance on 32-bit
// platforms, we use 64-bit '&' directly.
buffer[i] = hexdigits[value & 0xf];
#else
buffer[i] = hexdigits[uint32(value) & 0xf];
#endif
value >>= 4;
}
return buffer;

Loading…
Cancel
Save