From db73e90e3bd956c4be471789d8e23f5eb2a4601e Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 12 Feb 2015 22:21:54 -0800 Subject: [PATCH] Fix nullptr crash --- src/cpp/client/client_unary_call.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/cpp/client/client_unary_call.cc b/src/cpp/client/client_unary_call.cc index 69f0b77d7b8..b6bd81d93fc 100644 --- a/src/cpp/client/client_unary_call.cc +++ b/src/cpp/client/client_unary_call.cc @@ -64,8 +64,10 @@ Status BlockingUnaryCall(ChannelInterface *channel, const RpcMethod &method, class ClientAsyncRequest final : public CallOpBuffer { public: + bool got_message = false; void FinalizeResult(void** tag, bool* status) override { CallOpBuffer::FinalizeResult(tag, status); + *status &= got_message; delete this; } }; @@ -81,7 +83,7 @@ void AsyncUnaryCall(ChannelInterface *channel, const RpcMethod &method, buf->AddSendInitialMetadata(context); buf->AddSendMessage(request); buf->AddRecvInitialMetadata(&context->recv_initial_metadata_); - buf->AddRecvMessage(result, nullptr); + buf->AddRecvMessage(result, &buf->got_message); buf->AddClientSendClose(); buf->AddClientRecvStatus(&context->trailing_metadata_, status); call.PerformOps(buf);