diff --git a/include/grpc++/impl/codegen/call.h b/include/grpc++/impl/codegen/call.h index a40939f4d67f74e451e9af8e272fa1ce9181ba5a..f6eefb9f7ff7b748cab6689b29a501aa0dc50ff8 100644 --- a/include/grpc++/impl/codegen/call.h +++ b/include/grpc++/impl/codegen/call.h @@ -547,7 +547,10 @@ class CallOpClientRecvStatus { /// TODO(vjpai): Remove the existence of CallOpSetCollectionInterface /// and references to it. This code is deprecated-on-arrival and is /// only added for users that bypassed the code-generator. -class CallOpSetCollectionInterface {}; +class CallOpSetCollectionInterface { + public: + virtual ~CallOpSetCollectionInterface() {} +}; /// An abstract collection of call ops, used to generate the /// grpc_call_op structure to pass down to the lower layers, @@ -611,12 +614,13 @@ class CallOpSet : public CallOpSetInterface, this->Op6::FinishOp(status); *tag = return_tag_; - g_core_codegen_interface->grpc_call_unref(call_); - // TODO(vjpai): Remove the reference to collection_ once the idea of // bypassing the code generator is forbidden. It is already deprecated + grpc_call* call = call_; collection_.reset(); + g_core_codegen_interface->grpc_call_unref(call); + return true; }