Merge branch 'fix_uv_addrinfo_free' of github.com:jtattermusch/grpc into backport-14929

pull/14957/head
Nicolas "Pixel" Noble 7 years ago
commit ac768b5da3
  1. 12
      src/core/lib/iomgr/tcp_uv.cc

@ -338,7 +338,6 @@ static void uv_socket_connect(grpc_custom_socket* socket,
static grpc_resolved_addresses* handle_addrinfo_result(
struct addrinfo* result) {
struct addrinfo* resp;
struct addrinfo* prev;
size_t i;
grpc_resolved_addresses* addresses =
(grpc_resolved_addresses*)gpr_malloc(sizeof(grpc_resolved_addresses));
@ -348,16 +347,13 @@ static grpc_resolved_addresses* handle_addrinfo_result(
}
addresses->addrs = (grpc_resolved_address*)gpr_malloc(
sizeof(grpc_resolved_address) * addresses->naddrs);
i = 0;
resp = result;
while (resp != nullptr) {
for (resp = result, i = 0; resp != nullptr; resp = resp->ai_next, i++) {
memcpy(&addresses->addrs[i].addr, resp->ai_addr, resp->ai_addrlen);
addresses->addrs[i].len = resp->ai_addrlen;
i++;
prev = resp;
resp = resp->ai_next;
gpr_free(prev);
}
// addrinfo objects are allocated by libuv (e.g. in uv_getaddrinfo)
// and not by gpr_malloc
uv_freeaddrinfo(result);
return addresses;
}

Loading…
Cancel
Save