diff options
author | 2018-04-04 15:07:05 -0700 | |
---|---|---|
committer | 2018-04-04 15:07:05 -0700 | |
commit | 98c1017fd9f155aad13c3b86e8f17a456c9512e8 (patch) | |
tree | 398c337ca2d286fd50118794b9030dc8fdbedf64 /src | |
parent | e47d5211eca122fd6ca43ab487d815b80b7d68e2 (diff) | |
parent | 14c0da774f4c6fea9774fa8cd05cd1d1e7f03fe3 (diff) |
Merge pull request #14929 from jtattermusch/fix_uv_addrinfo_free
Try fixing memory_profile_test on libuv iomgr
Diffstat (limited to 'src')
-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; } |