Index: third_party/protobuf/java/core/src/main/java/com/google/protobuf/LazyFieldLite.java |
diff --git a/third_party/protobuf/java/core/src/main/java/com/google/protobuf/LazyFieldLite.java b/third_party/protobuf/java/core/src/main/java/com/google/protobuf/LazyFieldLite.java |
index 2febaacecbae0bc2182bf8debbbcf66fc30afcc4..4b0ba0fd6b7c564e1aec58f7ccd3832178758f15 100644 |
--- a/third_party/protobuf/java/core/src/main/java/com/google/protobuf/LazyFieldLite.java |
+++ b/third_party/protobuf/java/core/src/main/java/com/google/protobuf/LazyFieldLite.java |
@@ -284,29 +284,8 @@ public class LazyFieldLite { |
return; |
} |
- // At this point we have two fully parsed messages. We can't merge directly from one to the |
- // other because only generated builder code contains methods to mergeFrom another parsed |
- // message. We have to serialize one instance and then merge the bytes into the other. This may |
- // drop extensions from one of the messages if one of the values had an extension set on it |
- // directly. |
- // |
- // To mitigate this we prefer serializing a message that has an extension registry, and |
- // therefore a chance that all extensions set on it are in that registry. |
- // |
- // NOTE: The check for other.extensionRegistry not being null must come first because at this |
- // point in time if other.extensionRegistry is not null then this.extensionRegistry will not be |
- // null either. |
- if (other.extensionRegistry != null) { |
- setValue(mergeValueAndBytes(this.value, other.toByteString(), other.extensionRegistry)); |
- return; |
- } else if (this.extensionRegistry != null) { |
- setValue(mergeValueAndBytes(other.value, this.toByteString(), this.extensionRegistry)); |
- return; |
- } else { |
- // All extensions from the other message will be dropped because we have no registry. |
- setValue(mergeValueAndBytes(this.value, other.toByteString(), EMPTY_REGISTRY)); |
- return; |
- } |
+ // At this point we have two fully parsed messages. |
+ setValue(this.value.toBuilder().mergeFrom(other.value).build()); |
} |
/** |