From e13d71c57ca5656e16ad2f1e5b18949289b3f84e Mon Sep 17 00:00:00 2001 From: Oleksiy Vyalov Date: Thu, 27 Nov 2014 00:32:54 +0000 Subject: [PATCH] Refactor SocketAddress::getaddrinfo - avoid calling IsValid if ::getaddrinfo has failed. Otherwise, IsValid crashes on assertation in GetFamilyLength. llvm-svn: 222862 --- lldb/source/Host/common/SocketAddress.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lldb/source/Host/common/SocketAddress.cpp b/lldb/source/Host/common/SocketAddress.cpp index a952a83..6231631 100644 --- a/lldb/source/Host/common/SocketAddress.cpp +++ b/lldb/source/Host/common/SocketAddress.cpp @@ -214,6 +214,8 @@ SocketAddress::getaddrinfo (const char *host, int ai_protocol, int ai_flags) { + Clear (); + struct addrinfo hints; memset(&hints, 0, sizeof(hints)); hints.ai_family = ai_family; @@ -221,15 +223,17 @@ SocketAddress::getaddrinfo (const char *host, hints.ai_protocol = ai_protocol; hints.ai_flags = ai_flags; + bool result = false; struct addrinfo *service_info_list = NULL; int err = ::getaddrinfo (host, service, &hints, &service_info_list); if (err == 0 && service_info_list) + { *this = service_info_list; - else - Clear(); + result = IsValid (); + } :: freeaddrinfo (service_info_list); - return IsValid(); + return result; } -- 2.7.4