fix(big): endianness issue in ExtractLowPartSx

This commit is contained in:
Adam Heinermann 2024-11-15 04:30:25 -08:00 committed by superp00t
parent 94ef375b19
commit 04aae89252

View file

@ -147,12 +147,11 @@ uint32_t ExtractLowPartLargeSum(uint64_t& value, uint64_t add) {
} }
uint32_t ExtractLowPartSx(uint64_t& value) { uint32_t ExtractLowPartSx(uint64_t& value) {
auto low = static_cast<uint32_t>(value); uint32_t low = value & 0xFFFFFFFF;
value >>= 32; value >>= 32;
if (value >= 0x80000000) { if (value >= 0x80000000) {
reinterpret_cast<uint32_t*>(&value)[0] = value; value |= 0xFFFFFFFFULL << 32;
reinterpret_cast<uint32_t*>(&value)[1] = -1;
} }
return low; return low;