aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Michael Lumish <mlumish@google.com>2018-04-04 15:07:05 -0700
committerGravatar GitHub <noreply@github.com>2018-04-04 15:07:05 -0700
commit98c1017fd9f155aad13c3b86e8f17a456c9512e8 (patch)
tree398c337ca2d286fd50118794b9030dc8fdbedf64 /src
parente47d5211eca122fd6ca43ab487d815b80b7d68e2 (diff)
parent14c0da774f4c6fea9774fa8cd05cd1d1e7f03fe3 (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.cc12
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;
}