From 704523c2d8a142f723a5cc242c62f5b20afa4944 Mon Sep 17 00:00:00 2001 From: Changming Sun Date: Mon, 6 Jan 2025 13:10:43 -0800 Subject: [PATCH] [build] Be compatible with the latest protobuf (#23260) Resolve #21308 --- onnxruntime/core/graph/graph.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/onnxruntime/core/graph/graph.cc b/onnxruntime/core/graph/graph.cc index 0b6610db5e007..9fee3e49dc0d2 100644 --- a/onnxruntime/core/graph/graph.cc +++ b/onnxruntime/core/graph/graph.cc @@ -1288,10 +1288,12 @@ Graph::Graph(const Model& owning_model, // Remove sparse_initializers from protobuf to save memory as they are converted to dense now graph_proto_->mutable_sparse_initializer()->Clear(); +#if GOOGLE_PROTOBUF_VERSION < 5026000 const int sparse_num_cleared = graph_proto_->sparse_initializer().ClearedCount(); for (int i = 0; i < sparse_num_cleared; ++i) { delete graph_proto_->mutable_sparse_initializer()->ReleaseCleared(); } +#endif } #endif @@ -3646,15 +3648,16 @@ void Graph::CleanAllInitializedTensors() noexcept { #if !defined(DISABLE_SPARSE_TENSORS) sparse_tensor_names_.clear(); #endif - // Clearing RepeatedPtrFields does not free objects' memory. The memory is retained // and can be reused. Need to explicitly release the cleared objects and free the // memory. graph_proto_->mutable_initializer()->Clear(); +#if GOOGLE_PROTOBUF_VERSION < 5026000 const int num_cleared = graph_proto_->initializer().ClearedCount(); for (int i = 0; i < num_cleared; i++) { delete graph_proto_->mutable_initializer()->ReleaseCleared(); } +#endif } const ONNX_NAMESPACE::TensorProto* Graph::GetConstantInitializer(const std::string& initializer_name,