aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/google/protobuf/compiler/java/java_string_field.cc
diff options
context:
space:
mode:
authorGravatar Feng Xiao <xfxyjwf@gmail.com>2018-06-18 15:00:06 -0700
committerGravatar GitHub <noreply@github.com>2018-06-18 15:00:06 -0700
commit8af87de949dda877390288ebcdada8c708c4ff8c (patch)
tree24be4771f3e108fb9889c0f9d6dcb0ffae3eccd8 /src/google/protobuf/compiler/java/java_string_field.cc
parente264d6bc581481094829478e5d4547dcef35e70e (diff)
parentaba6f7ef6703d72eda3d063dc2e6566d84f080a5 (diff)
Merge pull request #2121 from mazurkin/issue-2108
issue-2108 [protoc/Java] Excessive copying on buildPartial()
Diffstat (limited to 'src/google/protobuf/compiler/java/java_string_field.cc')
-rw-r--r--src/google/protobuf/compiler/java/java_string_field.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/google/protobuf/compiler/java/java_string_field.cc b/src/google/protobuf/compiler/java/java_string_field.cc
index 2b6e9381..b08febc0 100644
--- a/src/google/protobuf/compiler/java/java_string_field.cc
+++ b/src/google/protobuf/compiler/java/java_string_field.cc
@@ -405,11 +405,15 @@ GenerateBuildingCode(io::Printer* printer) const {
if (SupportFieldPresence(descriptor_->file())) {
printer->Print(variables_,
"if ($get_has_field_bit_from_local$) {\n"
+ " result.$name$_ = $name$_;\n"
" $set_has_field_bit_to_local$;\n"
+ "} else {\n"
+ " result.$name$_ = $default$;\n"
"}\n");
+ } else {
+ printer->Print(variables_,
+ "result.$name$_ = $name$_;\n");
}
- printer->Print(variables_,
- "result.$name$_ = $name$_;\n");
}
void ImmutableStringFieldGenerator::