diff --git a/include/grpcpp/impl/codegen/call_op_set.h b/include/grpcpp/impl/codegen/call_op_set.h index e46ea05ce19..b1cbf481d82 100644 --- a/include/grpcpp/impl/codegen/call_op_set.h +++ b/include/grpcpp/impl/codegen/call_op_set.h @@ -772,9 +772,8 @@ class CallOpClientRecvStatus { void FinishOp(bool* /*status*/) { if (recv_status_ == nullptr || hijacked_) return; - if (status_code_ == StatusCode::OK) { + if (static_cast(status_code_) == StatusCode::OK) { *recv_status_ = Status(); - GPR_CODEGEN_DEBUG_ASSERT(GRPC_SLICE_IS_EMPTY(error_message_)); GPR_CODEGEN_DEBUG_ASSERT(debug_error_string_ == nullptr); } else { *recv_status_ = @@ -784,12 +783,14 @@ class CallOpClientRecvStatus { : grpc::string(GRPC_SLICE_START_PTR(error_message_), GRPC_SLICE_END_PTR(error_message_)), metadata_map_->GetBinaryErrorDetails()); - g_core_codegen_interface->grpc_slice_unref(error_message_); if (debug_error_string_ != nullptr) { client_context_->set_debug_error_string(debug_error_string_); g_core_codegen_interface->gpr_free((void*)debug_error_string_); } } + // TODO(soheil): Find callers that set debug string even for status OK, + // and fix them. + g_core_codegen_interface->grpc_slice_unref(error_message_); } void SetInterceptionHookPoint(