diff options
author | 2018-04-05 22:21:47 +0200 | |
---|---|---|
committer | 2018-04-05 22:21:47 +0200 | |
commit | ac768b5da360a7d776aae485570ca1c5b863a5f2 (patch) | |
tree | 443cbf7edb8f540c0bb2ad001075a35120beeb0c /src/core/lib/iomgr | |
parent | 9eb13032102f39761ab18e60698363995966e134 (diff) | |
parent | 14c0da774f4c6fea9774fa8cd05cd1d1e7f03fe3 (diff) |
Merge branch 'fix_uv_addrinfo_free' of github.com:jtattermusch/grpc into backport-14929
Diffstat (limited to 'src/core/lib/iomgr')
-rw-r--r-- | src/core/lib/iomgr/tcp_uv.cc | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/src/core/lib/iomgr/tcp_uv.cc b/src/core/lib/iomgr/tcp_uv.cc index a06b8cb51c..f20f8dcb74 100644 --- a/src/core/lib/iomgr/tcp_uv.cc +++ b/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; } |