Merge bitcoin/bitcoin#24059: Fix implicit-integer-sign-change in arith_uint256

fa99e108e778b5169b3de2ce557af68f1fe0ac0b Fix implicit-integer-sign-change in arith_uint256 (MarcoFalke)

Pull request description:

  This refactor doesn't change behaviour, but clarifies that the numbers being dealt with aren't supposed to be negative. This helps when reading the code and allows to remove a sanitizer suppression for the whole file.

ACKs for top commit:
  PastaPastaPasta:
    utACK fa99e108e778b5169b3de2ce557af68f1fe0ac0b
  shaavan:
    ACK fa99e108e778b5169b3de2ce557af68f1fe0ac0b

Tree-SHA512: f227e2fd22021e39f0445ec041f4a299d13477c23cef0fc06c53fb3313cbe550cec329336224a7e8775d9045b8009423052b394e83d42a1e40772085dfcdd471
This commit is contained in:
MarcoFalke 2022-01-17 08:48:20 +01:00 committed by pasta
parent 7e57600a22
commit 93027376bf
No known key found for this signature in database
GPG Key ID: 52527BEDABE87984
2 changed files with 2 additions and 3 deletions

View File

@ -96,7 +96,7 @@ base_uint<BITS>& base_uint<BITS>::operator/=(const base_uint& b)
while (shift >= 0) { while (shift >= 0) {
if (num >= div) { if (num >= div) {
num -= div; num -= div;
pn[shift / 32] |= (1 << (shift & 31)); // set a bit of the result. pn[shift / 32] |= (1U << (shift & 31)); // set a bit of the result.
} }
div >>= 1; // shift back. div >>= 1; // shift back.
shift--; shift--;
@ -231,7 +231,7 @@ uint32_t arith_uint256::GetCompact(bool fNegative) const
nCompact >>= 8; nCompact >>= 8;
nSize++; nSize++;
} }
assert((nCompact & ~0x007fffff) == 0); assert((nCompact & ~0x007fffffU) == 0);
assert(nSize < 256); assert(nSize < 256);
nCompact |= nSize << 24; nCompact |= nSize << 24;
nCompact |= (fNegative && (nCompact & 0x007fffff) ? 0x00800000 : 0); nCompact |= (fNegative && (nCompact & 0x007fffff) ? 0x00800000 : 0);

View File

@ -48,7 +48,6 @@ implicit-integer-sign-change:*/include/boost/
implicit-integer-sign-change:*/include/c++/ implicit-integer-sign-change:*/include/c++/
implicit-integer-sign-change:*/new_allocator.h implicit-integer-sign-change:*/new_allocator.h
implicit-integer-sign-change:addrman.h implicit-integer-sign-change:addrman.h
implicit-integer-sign-change:arith_uint256.cpp
implicit-integer-sign-change:bech32.cpp implicit-integer-sign-change:bech32.cpp
implicit-integer-sign-change:bloom.cpp implicit-integer-sign-change:bloom.cpp
implicit-integer-sign-change:chain.cpp implicit-integer-sign-change:chain.cpp