aboutsummaryrefslogtreecommitdiff
path: root/src/google/protobuf/util/internal/protostream_objectsource.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/google/protobuf/util/internal/protostream_objectsource.cc')
-rw-r--r--src/google/protobuf/util/internal/protostream_objectsource.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/google/protobuf/util/internal/protostream_objectsource.cc b/src/google/protobuf/util/internal/protostream_objectsource.cc
index 252184df0..f632064cc 100644
--- a/src/google/protobuf/util/internal/protostream_objectsource.cc
+++ b/src/google/protobuf/util/internal/protostream_objectsource.cc
@@ -539,6 +539,11 @@ Status ProtoStreamObjectSource::RenderStruct(const ProtoStreamObjectSource* os,
ow->StartObject(field_name);
while (tag != 0) {
field = os->FindAndVerifyField(type, tag);
+ if (field == nullptr) {
+ WireFormat::SkipField(os->stream_, tag, nullptr);
+ tag = os->stream_->ReadTag();
+ continue;
+ }
// google.protobuf.Struct has only one field that is a map. Hence we use
// RenderMap to render that field.
if (os->IsMap(*field)) {