| From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
| From: Peter Johnson <johnson.peter@gmail.com> |
| Date: Sat, 10 Jun 2023 14:13:07 -0700 |
| Subject: [PATCH 01/12] Fix sign-compare warnings |
| |
| --- |
| src/google/protobuf/compiler/importer.cc | 2 +- |
| src/google/protobuf/compiler/parser.cc | 4 ++-- |
| src/google/protobuf/io/io_win32.cc | 2 +- |
| src/google/protobuf/stubs/stringprintf.cc | 4 ++-- |
| src/google/protobuf/stubs/strutil.cc | 2 +- |
| src/google/protobuf/stubs/substitute.cc | 2 +- |
| src/google/protobuf/util/field_mask_util.cc | 2 +- |
| src/google/protobuf/util/internal/datapiece.cc | 7 +++++++ |
| .../protobuf/util/internal/default_value_objectwriter.cc | 4 ++-- |
| .../protobuf/util/internal/default_value_objectwriter.h | 2 +- |
| src/google/protobuf/util/internal/json_escaping.cc | 6 +++--- |
| src/google/protobuf/util/internal/json_objectwriter.h | 2 +- |
| src/google/protobuf/util/internal/json_stream_parser.cc | 8 ++++---- |
| src/google/protobuf/util/internal/proto_writer.cc | 2 +- |
| .../protobuf/util/internal/protostream_objectwriter.cc | 2 +- |
| src/google/protobuf/util/internal/utility.cc | 2 +- |
| src/google/protobuf/util/json_util.cc | 2 +- |
| 17 files changed, 31 insertions(+), 24 deletions(-) |
| |
| diff --git a/src/google/protobuf/compiler/importer.cc b/src/google/protobuf/compiler/importer.cc |
| index f1e26f8bdd1d3619acd8827f9a2a0e6b2acdd124..678e87eb03cc3959a1890327cd1e918cb1896fa3 100644 |
| --- a/src/google/protobuf/compiler/importer.cc |
| +++ b/src/google/protobuf/compiler/importer.cc |
| @@ -398,7 +398,7 @@ DiskSourceTree::DiskFileToVirtualFile(const std::string& disk_file, |
| int mapping_index = -1; |
| std::string canonical_disk_file = CanonicalizePath(disk_file); |
| |
| - for (int i = 0; i < mappings_.size(); i++) { |
| + for (size_t i = 0; i < mappings_.size(); i++) { |
| // Apply the mapping in reverse. |
| if (ApplyMapping(canonical_disk_file, mappings_[i].disk_path, |
| mappings_[i].virtual_path, virtual_file)) { |
| diff --git a/src/google/protobuf/compiler/parser.cc b/src/google/protobuf/compiler/parser.cc |
| index 5bd37d147bc449444f875f89367a208a32a9146e..e36a4a74359fcace20c017f241d58930660b9381 100644 |
| --- a/src/google/protobuf/compiler/parser.cc |
| +++ b/src/google/protobuf/compiler/parser.cc |
| @@ -159,7 +159,7 @@ bool IsLowerUnderscore(const std::string& name) { |
| } |
| |
| bool IsNumberFollowUnderscore(const std::string& name) { |
| - for (int i = 1; i < name.length(); i++) { |
| + for (size_t i = 1; i < name.length(); i++) { |
| const char c = name[i]; |
| if (IsNumber(c) && name[i - 1] == '_') { |
| return true; |
| @@ -500,7 +500,7 @@ void Parser::LocationRecorder::AttachComments( |
| if (!trailing->empty()) { |
| location_->mutable_trailing_comments()->swap(*trailing); |
| } |
| - for (int i = 0; i < detached_comments->size(); ++i) { |
| + for (size_t i = 0; i < detached_comments->size(); ++i) { |
| location_->add_leading_detached_comments()->swap((*detached_comments)[i]); |
| } |
| detached_comments->clear(); |
| diff --git a/src/google/protobuf/io/io_win32.cc b/src/google/protobuf/io/io_win32.cc |
| index 4e8190880918f1ba155d75db76d6c1ee0b003247..78c07d0d771b9c227c6cd930fc91d272fd67500f 100644 |
| --- a/src/google/protobuf/io/io_win32.cc |
| +++ b/src/google/protobuf/io/io_win32.cc |
| @@ -198,7 +198,7 @@ wstring normalize(wstring path) { |
| // Join all segments. |
| bool first = true; |
| std::wstringstream result; |
| - for (int i = 0; i < segments.size(); ++i) { |
| + for (size_t i = 0; i < segments.size(); ++i) { |
| if (!first) { |
| result << L'\\'; |
| } |
| diff --git a/src/google/protobuf/stubs/stringprintf.cc b/src/google/protobuf/stubs/stringprintf.cc |
| index a6ad4c0da4080f5241c26176046a3add5247e25c..8b890f47c386f0d6b0ab9fd9928fae03edd076eb 100644 |
| --- a/src/google/protobuf/stubs/stringprintf.cc |
| +++ b/src/google/protobuf/stubs/stringprintf.cc |
| @@ -149,10 +149,10 @@ std::string StringPrintfVector(const char* format, |
| // or displaying random chunks of memory to users. |
| |
| const char* cstr[kStringPrintfVectorMaxArgs]; |
| - for (int i = 0; i < v.size(); ++i) { |
| + for (size_t i = 0; i < v.size(); ++i) { |
| cstr[i] = v[i].c_str(); |
| } |
| - for (int i = v.size(); i < GOOGLE_ARRAYSIZE(cstr); ++i) { |
| + for (size_t i = v.size(); i < GOOGLE_ARRAYSIZE(cstr); ++i) { |
| cstr[i] = &string_printf_empty_block[0]; |
| } |
| |
| diff --git a/src/google/protobuf/stubs/strutil.cc b/src/google/protobuf/stubs/strutil.cc |
| index 594c8eac6a6ebff6d8bc8cc8518e3fd521f24da1..3462e91ff273dc071628f06b91698a0f166514fc 100644 |
| --- a/src/google/protobuf/stubs/strutil.cc |
| +++ b/src/google/protobuf/stubs/strutil.cc |
| @@ -697,7 +697,7 @@ bool safe_parse_positive_int(std::string text, IntType *value_p) { |
| IntType value = 0; |
| const IntType vmax = std::numeric_limits<IntType>::max(); |
| assert(vmax > 0); |
| - assert(vmax >= base); |
| + assert(static_cast<int>(vmax) >= base); |
| const IntType vmax_over_base = vmax / base; |
| const char* start = text.data(); |
| const char* end = start + text.size(); |
| diff --git a/src/google/protobuf/stubs/substitute.cc b/src/google/protobuf/stubs/substitute.cc |
| index d301682ee3377760430839bc5d6530621333e48d..8c75b2562e43d9d4ade3ef187d38e2e81b43e2c7 100644 |
| --- a/src/google/protobuf/stubs/substitute.cc |
| +++ b/src/google/protobuf/stubs/substitute.cc |
| @@ -128,7 +128,7 @@ void SubstituteAndAppend(std::string* output, const char* format, |
| } |
| } |
| |
| - GOOGLE_DCHECK_EQ(target - output->data(), output->size()); |
| + GOOGLE_DCHECK_EQ(target - output->data(), static_cast<int>(output->size())); |
| } |
| |
| } // namespace strings |
| diff --git a/src/google/protobuf/util/field_mask_util.cc b/src/google/protobuf/util/field_mask_util.cc |
| index 700e59004a083c731477bcc0bb4d5c36d06f306c..9a40b851a9e51d30b286ff5d89707bf9f279d0c0 100644 |
| --- a/src/google/protobuf/util/field_mask_util.cc |
| +++ b/src/google/protobuf/util/field_mask_util.cc |
| @@ -366,7 +366,7 @@ void FieldMaskTree::RemovePath(const std::string& path, |
| Node* node = &root_; |
| const Descriptor* current_descriptor = descriptor; |
| Node* new_branch_node = nullptr; |
| - for (int i = 0; i < parts.size(); ++i) { |
| + for (size_t i = 0; i < parts.size(); ++i) { |
| nodes[i] = node; |
| const FieldDescriptor* field_descriptor = |
| current_descriptor->FindFieldByName(parts[i]); |
| diff --git a/src/google/protobuf/util/internal/datapiece.cc b/src/google/protobuf/util/internal/datapiece.cc |
| index 3e7aa84da7181e2ab270e181b9f63deb1905542f..56f4a18fa4afc64708938fa5352937cdd17b5747 100644 |
| --- a/src/google/protobuf/util/internal/datapiece.cc |
| +++ b/src/google/protobuf/util/internal/datapiece.cc |
| @@ -53,6 +53,10 @@ namespace { |
| |
| template <typename To, typename From> |
| util::StatusOr<To> ValidateNumberConversion(To after, From before) { |
| +#ifdef __GNUC__ |
| +#pragma GCC diagnostic push |
| +#pragma GCC diagnostic ignored "-Wsign-compare" |
| +#endif |
| if (after == before && |
| MathUtil::Sign<From>(before) == MathUtil::Sign<To>(after)) { |
| return after; |
| @@ -62,6 +66,9 @@ util::StatusOr<To> ValidateNumberConversion(To after, From before) { |
| : std::is_same<From, double>::value ? DoubleAsString(before) |
| : FloatAsString(before)); |
| } |
| +#ifdef __GNUC__ |
| +#pragma GCC diagnostic pop |
| +#endif |
| } |
| |
| // For general conversion between |
| diff --git a/src/google/protobuf/util/internal/default_value_objectwriter.cc b/src/google/protobuf/util/internal/default_value_objectwriter.cc |
| index 7f61cdafa7c771a69364c5e9c49667535b16d957..a7d4ce78bd47e0250def474df8937927be9ef116 100644 |
| --- a/src/google/protobuf/util/internal/default_value_objectwriter.cc |
| +++ b/src/google/protobuf/util/internal/default_value_objectwriter.cc |
| @@ -312,7 +312,7 @@ void DefaultValueObjectWriter::Node::PopulateChildren( |
| std::unordered_map<std::string, int> orig_children_map; |
| |
| // Creates a map of child nodes to speed up lookup. |
| - for (int i = 0; i < children_.size(); ++i) { |
| + for (size_t i = 0; i < children_.size(); ++i) { |
| InsertIfNotPresent(&orig_children_map, children_[i]->name_, i); |
| } |
| |
| @@ -389,7 +389,7 @@ void DefaultValueObjectWriter::Node::PopulateChildren( |
| new_children.push_back(child.release()); |
| } |
| // Adds all leftover nodes in children_ to the beginning of new_child. |
| - for (int i = 0; i < children_.size(); ++i) { |
| + for (size_t i = 0; i < children_.size(); ++i) { |
| if (children_[i] == nullptr) { |
| continue; |
| } |
| diff --git a/src/google/protobuf/util/internal/default_value_objectwriter.h b/src/google/protobuf/util/internal/default_value_objectwriter.h |
| index a9e1673fa1e4ed35ab6890a44eed1d362265d914..1a151ab25951f8b0e1c9c724253b16524b88530a 100644 |
| --- a/src/google/protobuf/util/internal/default_value_objectwriter.h |
| +++ b/src/google/protobuf/util/internal/default_value_objectwriter.h |
| @@ -154,7 +154,7 @@ class PROTOBUF_EXPORT DefaultValueObjectWriter : public ObjectWriter { |
| bool preserve_proto_field_names, bool use_ints_for_enums, |
| FieldScrubCallBack field_scrub_callback); |
| virtual ~Node() { |
| - for (int i = 0; i < children_.size(); ++i) { |
| + for (size_t i = 0; i < children_.size(); ++i) { |
| delete children_[i]; |
| } |
| } |
| diff --git a/src/google/protobuf/util/internal/json_escaping.cc b/src/google/protobuf/util/internal/json_escaping.cc |
| index e4fa8cf788642e4a9d9c0460c287b1c24891b9fa..c192ddca7aff3984ffcbf82e13585bdf34ad8aae 100644 |
| --- a/src/google/protobuf/util/internal/json_escaping.cc |
| +++ b/src/google/protobuf/util/internal/json_escaping.cc |
| @@ -179,7 +179,7 @@ bool ReadCodePoint(StringPiece str, int index, uint32_t* cp, |
| // the last unicode code point. |
| *num_read = 0; |
| } |
| - while (*num_left > 0 && index < str.size()) { |
| + while (*num_left > 0 && index < static_cast<int>(str.size())) { |
| uint32_t ch = static_cast<uint8_t>(str[index++]); |
| --(*num_left); |
| ++(*num_read); |
| @@ -309,7 +309,7 @@ void JsonEscaping::Escape(strings::ByteSource* input, |
| while (input->Available() > 0) { |
| StringPiece str = input->Peek(); |
| StringPiece escaped; |
| - int i = 0; |
| + size_t i = 0; |
| int num_read; |
| bool ok; |
| bool cp_was_split = num_left > 0; |
| @@ -349,7 +349,7 @@ void JsonEscaping::Escape(StringPiece input, strings::ByteSink* output) { |
| const char* p = input.data(); |
| |
| bool can_skip_escaping = true; |
| - for (int i = 0; i < len; i++) { |
| + for (size_t i = 0; i < len; i++) { |
| char c = p[i]; |
| if (c < 0x20 || c >= 0x7F || c == '"' || c == '<' || c == '>' || |
| c == '\\') { |
| diff --git a/src/google/protobuf/util/internal/json_objectwriter.h b/src/google/protobuf/util/internal/json_objectwriter.h |
| index cb7dff6e9fe79858a73b2c7501106fe8d05ccac5..92348da3b5c3f07e6146136352f976c94fe54340 100644 |
| --- a/src/google/protobuf/util/internal/json_objectwriter.h |
| +++ b/src/google/protobuf/util/internal/json_objectwriter.h |
| @@ -102,7 +102,7 @@ class PROTOBUF_EXPORT JsonObjectWriter : public StructuredObjectWriter { |
| if (!indent_string.empty()) { |
| indent_char_ = indent_string[0]; |
| indent_count_ = indent_string.length(); |
| - for (int i = 1; i < indent_string.length(); i++) { |
| + for (size_t i = 1; i < indent_string.length(); i++) { |
| if (indent_char_ != indent_string_[i]) { |
| indent_char_ = '\0'; |
| indent_count_ = 0; |
| diff --git a/src/google/protobuf/util/internal/json_stream_parser.cc b/src/google/protobuf/util/internal/json_stream_parser.cc |
| index 5c34dbccafb9f40249ba3c0b7318b2e897f203dc..e786781f6de23c8a7ea282d061df6032111f6d21 100644 |
| --- a/src/google/protobuf/util/internal/json_stream_parser.cc |
| +++ b/src/google/protobuf/util/internal/json_stream_parser.cc |
| @@ -80,7 +80,7 @@ inline void ReplaceInvalidCodePoints(StringPiece str, |
| const std::string& replacement, |
| std::string* dst) { |
| while (!str.empty()) { |
| - int n_valid_bytes = internal::UTF8SpnStructurallyValid(str); |
| + size_t n_valid_bytes = internal::UTF8SpnStructurallyValid(str); |
| StringPiece valid_part = str.substr(0, n_valid_bytes); |
| StrAppend(dst, valid_part); |
| |
| @@ -98,7 +98,7 @@ inline void ReplaceInvalidCodePoints(StringPiece str, |
| |
| static bool ConsumeKey(StringPiece* input, StringPiece* key) { |
| if (input->empty() || !IsLetter((*input)[0])) return false; |
| - int len = 1; |
| + size_t len = 1; |
| for (; len < input->size(); ++len) { |
| if (!IsAlphanumeric((*input)[len])) { |
| break; |
| @@ -113,7 +113,7 @@ static bool ConsumeKey(StringPiece* input, StringPiece* key) { |
| static bool ConsumeKeyPermissive(StringPiece* input, |
| StringPiece* key) { |
| if (input->empty() || !IsLetter((*input)[0])) return false; |
| - int len = 1; |
| + size_t len = 1; |
| for (; len < input->size(); ++len) { |
| if (IsKeySeparator((*input)[len])) { |
| break; |
| @@ -946,7 +946,7 @@ util::Status JsonStreamParser::ParseKey() { |
| JsonStreamParser::TokenType JsonStreamParser::GetNextTokenType() { |
| SkipWhitespace(); |
| |
| - int size = p_.size(); |
| + size_t size = p_.size(); |
| if (size == 0) { |
| // If we ran out of data, report unknown and we'll place the previous parse |
| // type onto the stack and try again when we have more data. |
| diff --git a/src/google/protobuf/util/internal/proto_writer.cc b/src/google/protobuf/util/internal/proto_writer.cc |
| index afa5e2e474b6960b8826a40b73615d5dffd971de..11b6df13d8f4f9506e828c39d6e74bc8acceb23d 100644 |
| --- a/src/google/protobuf/util/internal/proto_writer.cc |
| +++ b/src/google/protobuf/util/internal/proto_writer.cc |
| @@ -408,7 +408,7 @@ std::string ProtoWriter::ProtoElement::ToString() const { |
| if (!ow_->IsRepeated(*(now->parent_field_)) || |
| now->parent()->parent_field_ != now->parent_field_) { |
| std::string name = now->parent_field_->name(); |
| - int i = 0; |
| + size_t i = 0; |
| while (i < name.size() && |
| (ascii_isalnum(name[i]) || name[i] == '_')) |
| ++i; |
| diff --git a/src/google/protobuf/util/internal/protostream_objectwriter.cc b/src/google/protobuf/util/internal/protostream_objectwriter.cc |
| index ecb219e06e514b1a6ba0e3e343126a75852d0a1d..ce94cfcefb417203f80142c54003efea283f6a1c 100644 |
| --- a/src/google/protobuf/util/internal/protostream_objectwriter.cc |
| +++ b/src/google/protobuf/util/internal/protostream_objectwriter.cc |
| @@ -378,7 +378,7 @@ void ProtoStreamObjectWriter::AnyWriter::StartAny(const DataPiece& value) { |
| |
| // Now we know the proto type and can interpret all data fields we gathered |
| // before the "@type" field. |
| - for (int i = 0; i < uninterpreted_events_.size(); ++i) { |
| + for (size_t i = 0; i < uninterpreted_events_.size(); ++i) { |
| uninterpreted_events_[i].Replay(this); |
| } |
| } |
| diff --git a/src/google/protobuf/util/internal/utility.cc b/src/google/protobuf/util/internal/utility.cc |
| index 918ee17d9b040ae1bf9d98e3f46f75770c471393..3c4ac086d594d67b334cbc1dc046c281cd59a374 100644 |
| --- a/src/google/protobuf/util/internal/utility.cc |
| +++ b/src/google/protobuf/util/internal/utility.cc |
| @@ -345,7 +345,7 @@ void DeleteWellKnownTypes() { delete well_known_types_; } |
| |
| void InitWellKnownTypes() { |
| well_known_types_ = new std::set<std::string>; |
| - for (int i = 0; i < GOOGLE_ARRAYSIZE(well_known_types_name_array_); ++i) { |
| + for (size_t i = 0; i < GOOGLE_ARRAYSIZE(well_known_types_name_array_); ++i) { |
| well_known_types_->insert(well_known_types_name_array_[i]); |
| } |
| google::protobuf::internal::OnShutdown(&DeleteWellKnownTypes); |
| diff --git a/src/google/protobuf/util/json_util.cc b/src/google/protobuf/util/json_util.cc |
| index c39c10d87b7d8bf6fc18cae1ce459257c45945d6..a9b1c52a73c86d3e3655ba0748f2a82c68bd40ce 100644 |
| --- a/src/google/protobuf/util/json_util.cc |
| +++ b/src/google/protobuf/util/json_util.cc |
| @@ -64,7 +64,7 @@ ZeroCopyStreamByteSink::~ZeroCopyStreamByteSink() { |
| |
| void ZeroCopyStreamByteSink::Append(const char* bytes, size_t len) { |
| while (true) { |
| - if (len <= buffer_size_) { // NOLINT |
| + if (static_cast<int>(len) <= buffer_size_) { // NOLINT |
| memcpy(buffer_, bytes, len); |
| buffer_ = static_cast<char*>(buffer_) + len; |
| buffer_size_ -= len; |