mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-08-30 19:51:19 +02:00
refactor: Remove UB in prevector reverse iterators
rend() creates a pointer with offset -1. This is UB, according to the C++ standard: https://eel.is/c++draft/expr.add#4: When an expression J that has integral type is added to [...] an expression P of pointer type, the result has the type of P. ... if P points to a (possibly-hypothetical) array element i of an array object x with n elements [...] the expressions P + J and J + P (where J has the value j) point to the (possibly-hypothetical) array element i+j of x if 0≤i+j≤n [...] Otherwise, the behavior is undefined. Also, it is unclear why the functions exist at all, when stdlib utils such as std::reverse_iterator{it} or std::views::reverse can be used out of the box. So remove them, along with the ubsan suppressions, that are no longer used.
This commit is contained in:
@@ -54,7 +54,6 @@ unsigned-integer-overflow:DecompressAmount
|
||||
unsigned-integer-overflow:crypto/
|
||||
unsigned-integer-overflow:MurmurHash3
|
||||
unsigned-integer-overflow:TxConfirmStats::EstimateMedianVal
|
||||
unsigned-integer-overflow:prevector.h
|
||||
unsigned-integer-overflow:InsecureRandomContext::rand64
|
||||
unsigned-integer-overflow:InsecureRandomContext::SplitMix64
|
||||
unsigned-integer-overflow:bitset_detail::PopCount
|
||||
@@ -62,7 +61,6 @@ implicit-integer-sign-change:SetStdinEcho
|
||||
implicit-integer-sign-change:compressor.h
|
||||
implicit-integer-sign-change:crypto/
|
||||
implicit-integer-sign-change:TxConfirmStats::removeTx
|
||||
implicit-integer-sign-change:prevector.h
|
||||
implicit-integer-sign-change:verify_flags
|
||||
implicit-integer-sign-change:EvalScript
|
||||
implicit-integer-sign-change:serialize.h
|
||||
|
Reference in New Issue
Block a user