You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In relation to the code above, the warnings below indicate that
Start = 0
End = 1
Size = 25
and
forming offset 1 is out of the bounds [0, 1] of object 'out' with type 'libbitcoin::system::data_array<1>' {aka 'std::array<unsigned char, 1>'}
This is a bogus warning. Iteration from element 0 to 1 of a 25 element array implies the copy of one element. The target is the first element of a single element array of the same type as the source. The end element of a std container is not required to be allocated and always has the same position as size (one past the last element).
The warning goes away under -O3.
In file included from /usr/include/c++/13/string:51,
from /usr/include/c++/13/bits/locale_classes.h:40,
from /usr/include/c++/13/bits/ios_base.h:41,
from /usr/include/c++/13/ios:44,
from /usr/include/c++/13/ostream:40,
from /usr/include/c++/13/iostream:41,
from ./include/bitcoin/system/wallet/addresses/payment_address.hpp:22,
from src/wallet/addresses/payment_address.cpp:19:
In static member function 'static constexpr _Up* std::__copy_move<_IsMove, true, std::random_access_iterator_tag>::__copy_m(_Tp*, _Tp*, _Up*) [with _Tp = const unsigned char; _Up = unsigned char; bool _IsMove = false]',
inlined from 'constexpr _OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = false; _II = const unsigned char*; _OI = unsigned char*]' at /usr/include/c++/13/bits/stl_algobase.h:506:30,
inlined from 'constexpr _OI std::__copy_move_a1(_II, _II, _OI) [with bool _IsMove = false; _II = const unsigned char*; _OI = unsigned char*]' at /usr/include/c++/13/bits/stl_algobase.h:533:42,
inlined from 'constexpr _OI std::__copy_move_a(_II, _II, _OI) [with bool _IsMove = false; _II = const unsigned char*; _OI = unsigned char*]' at /usr/include/c++/13/bits/stl_algobase.h:540:31,
inlined from 'constexpr _OI std::copy(_II, _II, _OI) [with _II = const unsigned char*; _OI = unsigned char*]' at /usr/include/c++/13/bits/stl_algobase.h:633:7,
inlined from 'constexpr libbitcoin::system::data_array<(End - Start)> libbitcoin::system::slice(data_array<Size>&) [with long unsigned int Start = 0; long unsigned int End = 1; long unsigned int Size = 25; typename std::enable_if<(!(Start > Size)), bool>::type <anonymous> = true; typename std::enable_if<(!(End > Size)), bool>::type <anonymous> = true; typename std::enable_if<(!(End < Start)), bool>::type <anonymous> = true]' at ./include/bitcoin/system/impl/data/data_array.ipp:106:14,
inlined from 'libbitcoin::system::wallet::checked<Prefix, Payload, Checksum>::prefix_type libbitcoin::system::wallet::checked<Prefix, Payload, Checksum>::prefix() const [with long unsigned int Prefix = 1; long unsigned int Payload = 20; long unsigned int Checksum = 4]' at ./include/bitcoin/system/impl/wallet/addresses/checked.ipp:103:31,
inlined from 'uint8_t libbitcoin::system::wallet::payment_address::prefix() const' at src/wallet/addresses/payment_address.cpp:156:27:
/usr/include/c++/13/bits/stl_algobase.h:437:30: warning: 'void* __builtin_memcpy(void*, const void*, long unsigned int)' forming offset 1 is out of the bounds [0, 1] of object 'out' with type 'libbitcoin::system::data_array<1>' {aka 'std::array<unsigned char, 1>'} [-Warray-bounds=]
437 | __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ./include/bitcoin/system/data/data_array.hpp:110,
from ./include/bitcoin/system/data/data.hpp:25,
from ./include/bitcoin/system/chain/checkpoint.hpp:25,
from ./include/bitcoin/system/chain/chain_state.hpp:24,
from ./include/bitcoin/system/chain/header.hpp:26,
from ./include/bitcoin/system/chain/block.hpp:26,
from ./include/bitcoin/system/chain/chain.hpp:22,
from ./include/bitcoin/system/wallet/addresses/payment_address.hpp:26:
./include/bitcoin/system/impl/data/data_array.ipp: In member function 'uint8_t libbitcoin::system::wallet::payment_address::prefix() const':
./include/bitcoin/system/impl/data/data_array.ipp:103:29: note: 'out' declared here
103 | data_array<End - Start> out;
| ^~~
In static member function 'static constexpr _Up* std::__copy_move<_IsMove, true, std::random_access_iterator_tag>::__copy_m(_Tp*, _Tp*, _Up*) [with _Tp = const unsigned char; _Up = unsigned char; bool _IsMove = false]',
inlined from 'constexpr _OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = false; _II = const unsigned char*; _OI = unsigned char*]' at /usr/include/c++/13/bits/stl_algobase.h:506:30,
inlined from 'constexpr _OI std::__copy_move_a1(_II, _II, _OI) [with bool _IsMove = false; _II = const unsigned char*; _OI = unsigned char*]' at /usr/include/c++/13/bits/stl_algobase.h:533:42,
inlined from 'constexpr _OI std::__copy_move_a(_II, _II, _OI) [with bool _IsMove = false; _II = const unsigned char*; _OI = unsigned char*]' at /usr/include/c++/13/bits/stl_algobase.h:540:31,
inlined from 'constexpr _OI std::copy(_II, _II, _OI) [with _II = const unsigned char*; _OI = unsigned char*]' at /usr/include/c++/13/bits/stl_algobase.h:633:7,
inlined from 'constexpr libbitcoin::system::data_array<(End - Start)> libbitcoin::system::slice(data_array<Size>&) [with long unsigned int Start = 0; long unsigned int End = 1; long unsigned int Size = 25; typename std::enable_if<(!(Start > Size)), bool>::type <anonymous> = true; typename std::enable_if<(!(End > Size)), bool>::type <anonymous> = true; typename std::enable_if<(!(End < Start)), bool>::type <anonymous> = true]' at ./include/bitcoin/system/impl/data/data_array.ipp:106:14,
inlined from 'libbitcoin::system::wallet::checked<Prefix, Payload, Checksum>::prefix_type libbitcoin::system::wallet::checked<Prefix, Payload, Checksum>::prefix() const [with long unsigned int Prefix = 1; long unsigned int Payload = 20; long unsigned int Checksum = 4]' at ./include/bitcoin/system/impl/wallet/addresses/checked.ipp:103:31,
inlined from 'uint8_t libbitcoin::system::wallet::payment_address::prefix() const' at src/wallet/addresses/payment_address.cpp:156:27,
inlined from 'libbitcoin::system::chain::script libbitcoin::system::wallet::payment_address::output_script() const' at src/wallet/addresses/payment_address.cpp:166:19:
/usr/include/c++/13/bits/stl_algobase.h:437:30: warning: 'void* __builtin_memcpy(void*, const void*, long unsigned int)' forming offset 1 is out of the bounds [0, 1] of object 'out' with type 'libbitcoin::system::data_array<1>' {aka 'std::array<unsigned char, 1>'} [-Warray-bounds=]
437 | __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./include/bitcoin/system/impl/data/data_array.ipp: In member function 'libbitcoin::system::chain::script libbitcoin::system::wallet::payment_address::output_script() const':
./include/bitcoin/system/impl/data/data_array.ipp:103:29: note: 'out' declared here
103 | data_array<End - Start> out;
| ^~~
The text was updated successfully, but these errors were encountered:
In relation to the code above, the warnings below indicate that
Start = 0
End = 1
Size = 25
and
This is a bogus warning. Iteration from element 0 to 1 of a 25 element array implies the copy of one element. The target is the first element of a single element array of the same type as the source. The end element of a std container is not required to be allocated and always has the same position as size (one past the last element).
The warning goes away under -O3.
The text was updated successfully, but these errors were encountered: