From cbe0bca4040e592889f022be23f9602a24487985 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Thu, 10 Jan 2019 13:21:54 +0000 Subject: [PATCH] Check AI_NUMERICSERV is defined before using it The AI_NUMERICSERV constant is missing from old Darwin systems, so only use it if it's supported. * include/experimental/internet [AI_NUMERICSERV] (resolver_base::numeric_service): Define conditionally. * testsuite/experimental/net/internet/resolver/base.cc: Test it conditionally. * testsuite/experimental/net/internet/resolver/ops/lookup.cc: Likewise. From-SVN: r267809 --- libstdc++-v3/ChangeLog | 9 +++++++++ libstdc++-v3/include/experimental/internet | 4 ++++ .../testsuite/experimental/net/internet/resolver/base.cc | 2 ++ .../testsuite/experimental/net/internet/resolver/ops/lookup.cc | 5 ++++- 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index fdaf477..19a12f8 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,12 @@ +2019-01-10 Jonathan Wakely + + * include/experimental/internet [AI_NUMERICSERV] + (resolver_base::numeric_service): Define conditionally. + * testsuite/experimental/net/internet/resolver/base.cc: Test it + conditionally. + * testsuite/experimental/net/internet/resolver/ops/lookup.cc: + Likewise. + 2019-01-10 Ville Voutilainen Jonathan Wakely diff --git a/libstdc++-v3/include/experimental/internet b/libstdc++-v3/include/experimental/internet index cd0eee2..07c62e6 100644 --- a/libstdc++-v3/include/experimental/internet +++ b/libstdc++-v3/include/experimental/internet @@ -1629,7 +1629,9 @@ namespace ip __flags_passive = AI_PASSIVE, __flags_canonical_name = AI_CANONNAME, __flags_numeric_host = AI_NUMERICHOST, +#ifdef AI_NUMERICSERV __flags_numeric_service = AI_NUMERICSERV, +#endif __flags_v4_mapped = AI_V4MAPPED, __flags_all_matching = AI_ALL, __flags_address_configured = AI_ADDRCONFIG @@ -1637,7 +1639,9 @@ namespace ip static constexpr flags passive = __flags_passive; static constexpr flags canonical_name = __flags_canonical_name; static constexpr flags numeric_host = __flags_numeric_host; +#ifdef AI_NUMERICSERV static constexpr flags numeric_service = __flags_numeric_service; +#endif static constexpr flags v4_mapped = __flags_v4_mapped; static constexpr flags all_matching = __flags_all_matching; static constexpr flags address_configured = __flags_address_configured; diff --git a/libstdc++-v3/testsuite/experimental/net/internet/resolver/base.cc b/libstdc++-v3/testsuite/experimental/net/internet/resolver/base.cc index 657e2f5..746557a 100644 --- a/libstdc++-v3/testsuite/experimental/net/internet/resolver/base.cc +++ b/libstdc++-v3/testsuite/experimental/net/internet/resolver/base.cc @@ -49,7 +49,9 @@ test01() (void) resolver::passive; (void) resolver::canonical_name; (void) resolver::numeric_host; +#ifdef AI_NUMERICSERV (void) resolver::numeric_service; +#endif (void) resolver::v4_mapped; (void) resolver::all_matching; (void) resolver::address_configured; diff --git a/libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/lookup.cc b/libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/lookup.cc index d926385..39fb7fd 100644 --- a/libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/lookup.cc +++ b/libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/lookup.cc @@ -49,7 +49,10 @@ test02() std::error_code ec; io_context ctx; ip::tcp::resolver resolv(ctx); - auto flags = ip::resolver_base::numeric_host | ip::tcp::resolver::numeric_service; + auto flags = ip::resolver_base::numeric_host; +#ifdef AI_NUMERICSERV + flags |= ip::tcp::resolver::numeric_service; +#endif auto addrs = resolv.resolve("127.0.0.1", "42", flags, ec); VERIFY( !ec ); VERIFY( addrs.size() > 0 ); -- 2.7.4