From 04aae89252db66ac4c40bb053fb4c45a6188dfb1 Mon Sep 17 00:00:00 2001 From: Adam Heinermann Date: Fri, 15 Nov 2024 04:30:25 -0800 Subject: [PATCH] fix(big): endianness issue in ExtractLowPartSx --- storm/big/Ops.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/storm/big/Ops.cpp b/storm/big/Ops.cpp index 01563e2..7f63ea6 100644 --- a/storm/big/Ops.cpp +++ b/storm/big/Ops.cpp @@ -147,12 +147,11 @@ uint32_t ExtractLowPartLargeSum(uint64_t& value, uint64_t add) { } uint32_t ExtractLowPartSx(uint64_t& value) { - auto low = static_cast(value); + uint32_t low = value & 0xFFFFFFFF; value >>= 32; if (value >= 0x80000000) { - reinterpret_cast(&value)[0] = value; - reinterpret_cast(&value)[1] = -1; + value |= 0xFFFFFFFFULL << 32; } return low;