diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2018-10-18 22:55:41 +0200 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2018-10-18 22:55:44 +0200 |
commit | 3715b2489e986c27efd1dbd249d3604c3acd27b2 (patch) | |
tree | 7e20574b803c5fb08f368ac5d43bd4c74dd8cc21 /src | |
parent | fe23553edd84b0247e05ec3de023944c558afd54 (diff) | |
parent | 96f6dc9fc50b1cc59e26d50940ebf46e1bdcc0ba (diff) |
Merge #14510: Avoid triggering undefined behaviour in base_uint<BITS>::bits()
96f6dc9fc50b1cc59e26d50940ebf46e1bdcc0ba Avoid triggering undefined behaviour in base_uint<BITS>::bits() (practicalswift)
Pull request description:
Avoid triggering undefined behaviour in `base_uint<BITS>::bits()`.
`1 << 31` is undefined behaviour in C++11.
Given the reasonable assumption of `sizeof(int) * CHAR_BIT == 32`.
Tree-SHA512: 995fa38e71c8921873139ecf1b7dd54178555219af3be60d07290f379439ddd8479e3963c6f3cae8178efb61063a0f9add6cba82a5578d13888597b5bcd54f22
Diffstat (limited to 'src')
-rw-r--r-- | src/arith_uint256.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/arith_uint256.cpp b/src/arith_uint256.cpp index 13fa176f8b..791dad7a60 100644 --- a/src/arith_uint256.cpp +++ b/src/arith_uint256.cpp @@ -176,7 +176,7 @@ unsigned int base_uint<BITS>::bits() const for (int pos = WIDTH - 1; pos >= 0; pos--) { if (pn[pos]) { for (int nbits = 31; nbits > 0; nbits--) { - if (pn[pos] & 1 << nbits) + if (pn[pos] & 1U << nbits) return 32 * pos + nbits + 1; } return 32 * pos + 1; |