aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/include/experimental
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2021-02-12 13:01:20 +0000
committerJonathan Wakely <jwakely@redhat.com>2021-02-12 14:30:14 +0000
commit970ba719250ec06767e0617658bb92a64fde0f3f (patch)
tree9ab015114797f6715c266a78816f2a8f28661d81 /libstdc++-v3/include/experimental
parent87eaa3c525eb65775e6d77403b83a273a2397099 (diff)
downloadgcc-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/internet22
-rw-r--r--libstdc++-v3/include/experimental/io_context10
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;