From 2056e985a90d4d344db7837bdda0bb9af8127861 Mon Sep 17 00:00:00 2001 From: Christian Hofstaedtler Date: Fri, 1 Jul 2016 11:35:18 +0200 Subject: [PATCH] resolver.cc: fix warnings found by clang-703.0.31 on OS X Move try/catch inside the function, as otherwise clang complains: cannot refer to a non-static member from the handler of a constructor function try block This also cleans up the initialization of locals[]. Without this, the code might have ended up closing stdout or another unrelated socket. --- pdns/resolver.cc | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/pdns/resolver.cc b/pdns/resolver.cc index 97bba89a53..0220e15736 100644 --- a/pdns/resolver.cc +++ b/pdns/resolver.cc @@ -91,18 +91,19 @@ int makeQuerySocket(const ComboAddress& local, bool udpOrTCP) } Resolver::Resolver() -try { - locals["default4"] = makeQuerySocket(ComboAddress(::arg()["query-local-address"]), true); - if(!::arg()["query-local-address6"].empty()) - locals["default6"] = makeQuerySocket(ComboAddress(::arg()["query-local-address6"]), true); - else - locals["default6"] = -1; -} -catch(...) { - if(locals["default4"]>=0) - close(locals["default4"]); - throw; + locals["default4"] = -1; + locals["default6"] = -1; + try { + locals["default4"] = makeQuerySocket(ComboAddress(::arg()["query-local-address"]), true); + if(!::arg()["query-local-address6"].empty()) + locals["default6"] = makeQuerySocket(ComboAddress(::arg()["query-local-address6"]), true); + } + catch(...) { + if(locals["default4"]>=0) + close(locals["default4"]); + throw; + } } Resolver::~Resolver() -- 2.47.2