| Index: third_party/protobuf/src/google/protobuf/util/message_differencer.cc
|
| diff --git a/third_party/protobuf/src/google/protobuf/util/message_differencer.cc b/third_party/protobuf/src/google/protobuf/util/message_differencer.cc
|
| index fe8119bf3d54d972fa7131b7547d2217256dfd81..328b40d8e36b7a1d1fb2f4811f8c82022c96b9bb 100644
|
| --- a/third_party/protobuf/src/google/protobuf/util/message_differencer.cc
|
| +++ b/third_party/protobuf/src/google/protobuf/util/message_differencer.cc
|
| @@ -474,7 +474,10 @@ bool MessageDifferencer::Compare(
|
|
|
| // Retrieve all the set fields, including extensions.
|
| vector<const FieldDescriptor*> message1_fields;
|
| + message1_fields.reserve(1 + message1.GetDescriptor()->field_count());
|
| +
|
| vector<const FieldDescriptor*> message2_fields;
|
| + message2_fields.reserve(1 + message2.GetDescriptor()->field_count());
|
|
|
| reflection1->ListFields(message1, &message1_fields);
|
| reflection2->ListFields(message2, &message2_fields);
|
| @@ -623,6 +626,7 @@ bool MessageDifferencer::CompareWithFieldsInternal(
|
| }
|
|
|
| if (reporter_ != NULL) {
|
| + assert(field1 != NULL);
|
| int count = field1->is_repeated() ?
|
| reflection1->FieldSize(message1, field1) : 1;
|
|
|
| @@ -703,6 +707,7 @@ bool MessageDifferencer::CompareWithFieldsInternal(
|
| }
|
|
|
| bool fieldDifferent = false;
|
| + assert(field1 != NULL);
|
| if (field1->is_repeated()) {
|
| fieldDifferent = !CompareRepeatedField(message1, message2, field1,
|
| parent_fields);
|
| @@ -872,6 +877,7 @@ bool MessageDifferencer::CompareRepeatedField(
|
|
|
| for (int i = 0; i < count1; ++i) {
|
| if (match_list1[i] != -1) continue;
|
| + assert(reporter_ != NULL);
|
| specific_field.index = i;
|
| parent_fields->push_back(specific_field);
|
| reporter_->ReportDeleted(message1, message2, *parent_fields);
|
| @@ -1383,11 +1389,10 @@ bool MessageDifferencer::MatchRepeatedFieldIndices(
|
| if (key_comparator != NULL || IsTreatedAsSet(repeated_field)) {
|
| if (scope_ == PARTIAL) {
|
| // When partial matching is enabled, Compare(a, b) && Compare(a, c)
|
| - // doesn't neccessarily imply Compare(b, c). Therefore a naive greedy
|
| + // doesn't necessarily imply Compare(b, c). Therefore a naive greedy
|
| // algorithm will fail to find a maximum matching.
|
| // Here we use the argumenting path algorithm.
|
| - MaximumMatcher::NodeMatchCallback* callback =
|
| - ::google::protobuf::internal::NewPermanentCallback(
|
| + MaximumMatcher::NodeMatchCallback* callback = NewPermanentCallback(
|
| this, &MessageDifferencer::IsMatch,
|
| repeated_field, key_comparator,
|
| &message1, &message2, parent_fields);
|
|
|