From 4773c6fafff3381a238f214c68130c7bfe02400d Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Tue, 28 Apr 2020 23:40:17 -0700 Subject: [PATCH] misc: Use the protobuf version to choose between ByteSize(Long). Older versions of protobuf are apparently still what's provided with some current versions of some distributions. To avoid breaking the build on those distributions and to avoid an annoying deprecation warning on newer systems, check GOOGLE_PROTOBUF_VERSION to choose which to use. According to the CHANGES.txt file here: https://github.com/protocolbuffers/protobuf/blob/master/CHANGES.txt The new ByteSizeLong function was introduced in version 3.1.0 in 2016. Change-Id: I7f8eeda144bf9556d17d7a0a741996f3137b48b4 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28287 Reviewed-by: Tommaso Marinelli Maintainer: Jason Lowe-Power Tested-by: kokoro --- src/proto/protoio.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/proto/protoio.cc b/src/proto/protoio.cc index 2efcc2744..691d4ee5c 100644 --- a/src/proto/protoio.cc +++ b/src/proto/protoio.cc @@ -87,7 +87,12 @@ ProtoOutputStream::write(const Message& msg) io::CodedOutputStream codedStream(zeroCopyStream); // Write the size of the message to the stream - codedStream.WriteVarint32(msg.ByteSizeLong()); +# if GOOGLE_PROTOBUF_VERSION < 3001000 + auto msg_size = msg.ByteSize(); +# else + auto msg_size = msg.ByteSizeLong(); +# endif + codedStream.WriteVarint32(msg_size); // Write the message itself to the stream msg.SerializeWithCachedSizes(&codedStream); -- 2.30.2