| Index: mojo/public/tools/bindings/generators/cpp_templates/union_serialization_definition.tmpl
|
| diff --git a/mojo/public/tools/bindings/generators/cpp_templates/union_serialization_definition.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/union_serialization_definition.tmpl
|
| index 3471932b6818d57bc872b80797486be1e731527d..3d35ca481d37443e853cc45f1e0732dc852e5ec3 100644
|
| --- a/mojo/public/tools/bindings/generators/cpp_templates/union_serialization_definition.tmpl
|
| +++ b/mojo/public/tools/bindings/generators/cpp_templates/union_serialization_definition.tmpl
|
| @@ -93,7 +93,7 @@ void SerializeUnion_({{union.name}}Ptr input, mojo::internal::Buffer* buf,
|
| *output = result;
|
| }
|
|
|
| -void Deserialize_(internal::{{union.name}}_Data* input,
|
| +bool Deserialize_(internal::{{union.name}}_Data* input,
|
| {{union.name}}Ptr* output,
|
| mojo::internal::SerializationContext* context) {
|
| if (input && !input->is_null()) {
|
| @@ -104,7 +104,8 @@ void Deserialize_(internal::{{union.name}}_Data* input,
|
| case {{union.name}}::Tag::{{field.name|upper}}: {
|
| {% if field.kind|is_object_kind %}
|
| result_acc.SwitchActive({{union.name}}::Tag::{{field.name|upper}});
|
| - Deserialize_(input->data.f_{{field.name}}.ptr, result_acc.data()->{{field.name}}, context);
|
| + if (!Deserialize_(input->data.f_{{field.name}}.ptr, result_acc.data()->{{field.name}}, context))
|
| + return false;
|
| {% elif field.kind|is_any_handle_kind %}
|
| {{field.kind|cpp_wrapper_type}}* {{field.name}} =
|
| reinterpret_cast<{{field.kind|cpp_wrapper_type}}*>(&input->data.f_{{field.name}});
|
| @@ -132,4 +133,5 @@ void Deserialize_(internal::{{union.name}}_Data* input,
|
| } else {
|
| output->reset();
|
| }
|
| + return true;
|
| }
|
|
|