A workaround for MSVC 2010 x64 platform bug,
which affects proto compiler in generating field has_bit mask.
This commit is contained in:
parent
2a89d0022d
commit
cb6dd4ef5f
1 changed files with 7 additions and 0 deletions
|
@ -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…
Add table
Reference in a new issue