From 62b422c4ee5d5950c0febd4ef20e00ff4c897047 Mon Sep 17 00:00:00 2001 From: Vijay Pai Date: Thu, 16 May 2019 17:00:18 -0700 Subject: [PATCH] Grab a ref on fake resolver generator before scheduling a closure --- .../ext/filters/client_channel/resolver/fake/fake_resolver.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc b/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc index 85b9bea6f70..7f613ee21bc 100644 --- a/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +++ b/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc @@ -175,11 +175,13 @@ void FakeResolverResponseGenerator::SetResponseLocked(void* arg, resolver->next_result_ = std::move(closure_arg->result); resolver->has_next_result_ = true; resolver->MaybeSendResultLocked(); + closure_arg->generator->Unref(); Delete(closure_arg); } void FakeResolverResponseGenerator::SetResponse(Resolver::Result result) { if (resolver_ != nullptr) { + Ref().release(); // ref to be held by closure SetResponseClosureArg* closure_arg = New(); closure_arg->generator = this; closure_arg->result = std::move(result);