| Index: mojo/public/tools/bindings/generators/cpp_templates/struct_macros.tmpl
|
| diff --git a/mojo/public/tools/bindings/generators/cpp_templates/struct_macros.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/struct_macros.tmpl
|
| index 11cb099543514b77b1a13458ae4cc86f6cf3c6ee..12e2dbba45b5128fd0bdaefd1eda4088fe1b640b 100644
|
| --- a/mojo/public/tools/bindings/generators/cpp_templates/struct_macros.tmpl
|
| +++ b/mojo/public/tools/bindings/generators/cpp_templates/struct_macros.tmpl
|
| @@ -13,22 +13,42 @@
|
|
|
| {%- for packed_field in struct.packed.packed_fields %}
|
| {%- set name = packed_field.field.name %}
|
| -{%- if packed_field.field.kind|is_object_kind %}
|
| -{%- set wrapper_type = packed_field.field.kind|cpp_wrapper_type %}
|
| +{%- set kind = packed_field.field.kind %}
|
| +{%- if kind|is_object_kind %}
|
| +{%- set wrapper_type = kind|cpp_wrapper_type %}
|
| +{%- if not kind|is_nullable_kind %}
|
| + if (mojo::internal::IsNonNullableValidationEnabled() &&
|
| + !object->{{name}}.offset) {
|
| + ReportValidationError(
|
| + mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER);
|
| + return false;
|
| + }
|
| +{%- endif %}
|
| if (!mojo::internal::ValidateEncodedPointer(&object->{{name}}.offset)) {
|
| ReportValidationError(mojo::internal::VALIDATION_ERROR_ILLEGAL_POINTER);
|
| return false;
|
| }
|
| +{%- if kind|is_any_array_kind or kind|is_string_kind %}
|
| + if (!{{wrapper_type}}::Data_::Validate<
|
| + {{kind|get_array_validate_params|indent(10)}}>(
|
| + mojo::internal::DecodePointerRaw(&object->{{name}}.offset),
|
| + bounds_checker)) {
|
| +{%- else %}
|
| if (!{{wrapper_type}}::Data_::Validate(
|
| mojo::internal::DecodePointerRaw(&object->{{name}}.offset),
|
| - bounds_checker
|
| -{%- if packed_field.field.kind|is_any_array_kind -%}
|
| - , {{packed_field.field.kind|expected_array_size}}
|
| -{%- endif -%}
|
| - )) {
|
| + bounds_checker)) {
|
| +{%- endif %}
|
| return false;
|
| }
|
| -{%- elif packed_field.field.kind|is_any_handle_kind %}
|
| +{%- elif kind|is_any_handle_kind %}
|
| +{%- if not kind|is_nullable_kind %}
|
| + if (mojo::internal::IsNonNullableValidationEnabled() &&
|
| + object->{{name}}.value() == mojo::internal::kEncodedInvalidHandleValue) {
|
| + ReportValidationError(
|
| + mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE);
|
| + return false;
|
| + }
|
| +{%- endif %}
|
| if (!bounds_checker->ClaimHandle(object->{{name}})) {
|
| ReportValidationError(mojo::internal::VALIDATION_ERROR_ILLEGAL_HANDLE);
|
| return false;
|
|
|