Index: mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_definition.tmpl |
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_definition.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_definition.tmpl |
index f48cca72fb45734058cf6eda9554dc674c2d671a..f81bbb44e8c51d260824eb19804939e3c31790e2 100644 |
--- a/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_definition.tmpl |
+++ b/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_definition.tmpl |
@@ -15,11 +15,30 @@ void Serialize_({{struct.name}}Ptr input, mojo::internal::Buffer* buf, |
internal::{{struct.name}}_Data::New(buf); |
{%- for pf in struct.packed.packed_fields %} |
{%- if pf.field.kind|is_object_kind %} |
+{%- if pf.field.kind|is_any_array_kind %} |
+ mojo::SerializeArray_<{{pf.field.kind|get_array_validate_params|indent(26)}}>( |
+ mojo::internal::Forward(input->{{pf.field.name}}), buf, &result->{{pf.field.name}}.ptr); |
+{%- else %} |
Serialize_(mojo::internal::Forward(input->{{pf.field.name}}), buf, &result->{{pf.field.name}}.ptr); |
-{%- elif pf.field.kind|is_interface_kind %} |
- result->{{pf.field.name}} = input->{{pf.field.name}}.PassMessagePipe().release(); |
+{%- endif %} |
+{%- if not pf.field.kind|is_nullable_kind %} |
+ MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
+ mojo::internal::IsNonNullableValidationEnabled() && |
+ !result->{{pf.field.name}}.ptr, |
+ mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER); |
+{%- endif %} |
{%- elif pf.field.kind|is_any_handle_kind %} |
+{%- if pf.field.kind|is_interface_kind %} |
+ result->{{pf.field.name}} = input->{{pf.field.name}}.PassMessagePipe().release(); |
+{%- else %} |
result->{{pf.field.name}} = input->{{pf.field.name}}.release(); |
+{%- endif %} |
+{%- if not pf.field.kind|is_nullable_kind %} |
+ MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
+ mojo::internal::IsNonNullableValidationEnabled() && |
+ !result->{{pf.field.name}}.is_valid(), |
+ mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE); |
+{%- endif %} |
{%- else %} |
result->{{pf.field.name}} = input->{{pf.field.name}}; |
{%- endif %} |