| Index: third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/validation_macros.tmpl
|
| diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/validation_macros.tmpl b/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/validation_macros.tmpl
|
| index 0c4443e398749cd0d96d0b5a7b62b4eacc730ba4..d12c54b43eccad7a5a0182ee9bd27112be2a15de 100644
|
| --- a/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/validation_macros.tmpl
|
| +++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/validation_macros.tmpl
|
| @@ -25,9 +25,26 @@ if (!{{field.kind|cpp_wrapper_type}}::Data_::Validate(
|
| }
|
| {%- endmacro %}
|
|
|
| +{%- macro validate_handle(field_expr, field, object_name) -%}
|
| + const mojo::Handle {{field.name}}_handle(object->data.f_{{field.name}});
|
| +
|
| +{%- if not field.kind|is_nullable_kind %}
|
| + if ({{field.name}}_handle.value() == mojo::internal::kEncodedInvalidHandleValue) {
|
| + ReportValidationError(
|
| + mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE,
|
| + "invalid {{field.name}} field in {{object_name}}");
|
| + return false;
|
| + }
|
| +{%- endif %}
|
| + if (!bounds_checker->ClaimHandle({{field.name}}_handle)) {
|
| + ReportValidationError(mojo::internal::VALIDATION_ERROR_ILLEGAL_HANDLE);
|
| + return false;
|
| + }
|
| +{%- endmacro -%}
|
| +
|
| {%- macro validate_union_field(field, union) %}
|
| {%- set field_expr = "(reinterpret_cast<const "
|
| - ~ field.kind|cpp_field_type
|
| + ~ field.kind|cpp_union_field_type
|
| ~ "*>(&object->data.f_"
|
| ~ field.name
|
| ~ "))" -%}
|
| @@ -41,5 +58,9 @@ if (!{{field.kind|cpp_wrapper_type}}::Data_::Validate(
|
| {%- if field.kind|is_array_kind or field.kind|is_string_kind -%}
|
| {{ validate_array_or_string(field_expr, field) }}
|
| {%- endif %}
|
| +
|
| +{%- if field.kind|is_any_handle_kind -%}
|
| +{{ validate_handle(field_expr, field, union.name) }}
|
| +{%- endif %}
|
| return true;
|
| {%- endmacro %}
|
|
|