Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1264)

Unified Diff: mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_definition.tmpl

Issue 469393004: Mojo: Add warning of invalid serialization results (in debug build). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 %}

Powered by Google App Engine
This is Rietveld 408576698