Skip to content

Commit 776b3a8

Browse files
author
Adam Cozzette
committed
Fixed infinite recursion problem with Java GeneratedMessageV3 (#5657)
GeneratedMessageV3#setUnknownFieldsProto3 was trying to delegate to setUnknownFields but was inadvertently resulting in infinite recursion. This commit makes setUnknownFields and setUnknownFieldsProto3 delegate to a common private method to fix the problem and avoid confusion.
1 parent 7d9377e commit 776b3a8

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

java/core/src/main/java/com/google/protobuf/GeneratedMessageV3.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -710,19 +710,23 @@ public BuilderType addRepeatedField(final FieldDescriptor field, final Object va
710710
return (BuilderType) this;
711711
}
712712

713-
@Override
714-
public BuilderType setUnknownFields(final UnknownFieldSet unknownFields) {
713+
private BuilderType setUnknownFieldsInternal(final UnknownFieldSet unknownFields) {
715714
this.unknownFields = unknownFields;
716715
onChanged();
717716
return (BuilderType) this;
718717
}
719718

719+
@Override
720+
public BuilderType setUnknownFields(final UnknownFieldSet unknownFields) {
721+
return setUnknownFieldsInternal(unknownFields);
722+
}
723+
720724
/**
721-
* Delegates to setUnknownFields. This method is obsolete, but we must retain it for
722-
* compatibility with older generated code.
725+
* This method is obsolete, but we must retain it for compatibility with
726+
* older generated code.
723727
*/
724728
protected BuilderType setUnknownFieldsProto3(final UnknownFieldSet unknownFields) {
725-
return setUnknownFields(unknownFields);
729+
return setUnknownFieldsInternal(unknownFields);
726730
}
727731

728732
@Override

0 commit comments

Comments
 (0)