diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2021-02-12 13:01:20 +0000 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2021-02-12 14:30:14 +0000 |
commit | 970ba719250ec06767e0617658bb92a64fde0f3f (patch) | |
tree | 9ab015114797f6715c266a78816f2a8f28661d81 /libstdc++-v3/include/experimental | |
parent | 87eaa3c525eb65775e6d77403b83a273a2397099 (diff) | |
download | gcc-970ba719250ec06767e0617658bb92a64fde0f3f.zip gcc-970ba719250ec06767e0617658bb92a64fde0f3f.tar.gz gcc-970ba719250ec06767e0617658bb92a64fde0f3f.tar.bz2 |
libstdc++: Fix errors in <experimental/internet>
libstdc++-v3/ChangeLog:
* include/experimental/internet (address_v6::any): Avoid using
memcpy in constexpr function.
(address_v6::loopback): Likewise.
(make_address_v6): Fix missing return statements on error paths.
* include/experimental/io_context: Avoid -Wdangling-else
warning.
* testsuite/experimental/net/internet/address/v4/members.cc:
Remove unused variables.
* testsuite/experimental/net/internet/address/v6/members.cc:
New test.
Diffstat (limited to 'libstdc++-v3/include/experimental')
-rw-r--r-- | libstdc++-v3/include/experimental/internet | 22 | ||||
-rw-r--r-- | libstdc++-v3/include/experimental/io_context | 10 |
2 files changed, 21 insertions, 11 deletions
diff --git a/libstdc++-v3/include/experimental/internet b/libstdc++-v3/include/experimental/internet index 2fc2533..5783167 100644 --- a/libstdc++-v3/include/experimental/internet +++ b/libstdc++-v3/include/experimental/internet @@ -354,19 +354,18 @@ namespace ip #endif // static members: + static constexpr address_v6 any() noexcept { - address_v6 __addr; - __builtin_memcpy(&__addr._M_bytes, in6addr_any.s6_addr, 16); - return __addr; + return {}; } static constexpr address_v6 loopback() noexcept { address_v6 __addr; - __builtin_memcpy(&__addr._M_bytes, in6addr_loopback.s6_addr, 16); + __addr._M_bytes[15] = 1; return __addr; } @@ -755,7 +754,10 @@ namespace ip __str++; } if (__out == std::end(__buf)) - __ec = std::make_error_code(std::errc::invalid_argument); + { + __ec = std::make_error_code(std::errc::invalid_argument); + return {}; + } else { *__out = '\0'; @@ -790,7 +792,10 @@ namespace ip __n++; } if (__out == std::end(__buf)) - __ec = std::make_error_code(std::errc::invalid_argument); + { + __ec = std::make_error_code(std::errc::invalid_argument); + return {}; + } else { *__out = '\0'; @@ -835,7 +840,10 @@ namespace ip __n++; } if (__out == std::end(__buf)) - __ec = std::make_error_code(std::errc::invalid_argument); + { + __ec = std::make_error_code(std::errc::invalid_argument); + return {}; + } else { *__out = '\0'; diff --git a/libstdc++-v3/include/experimental/io_context b/libstdc++-v3/include/experimental/io_context index 12c269b..c82f30c 100644 --- a/libstdc++-v3/include/experimental/io_context +++ b/libstdc++-v3/include/experimental/io_context @@ -680,10 +680,12 @@ inline namespace v1 continue; if (__res == __reactor::_S_timeout) - if (__timerq == nullptr) - return false; - else - continue; // timed out, so restart loop and process the timer + { + if (__timerq == nullptr) + return false; + else + continue; // timed out, so restart loop and process the timer + } __timerq = nullptr; |