| Index: third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl
|
| diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl b/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl
|
| index 9ddcc5168db21b4c8cc0d591c558dffe69a4be3d..487d2a5cc137be900891db0b3d20dfc3f28d1541 100644
|
| --- a/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl
|
| +++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl
|
| @@ -60,11 +60,9 @@ void {{class_name}}::EncodePointersAndHandles(
|
| switch (tag) {
|
| {%- for field in union.fields %}
|
| case {{enum_name}}::{{field.name|upper}}: {
|
| -{%- if field.kind|is_object_kind and not field.kind|is_union_kind %}
|
| - mojo::internal::Encode(
|
| - reinterpret_cast<{{field.kind|cpp_field_type}}*>(&data.f_{{field.name}}),
|
| - handles);
|
| -{%- elif field.kind|is_any_handle_kind %}
|
| +{%- if field.kind|is_object_kind %}
|
| + mojo::internal::Encode(&data.f_{{field.name}}, handles);
|
| +{%- elif field.kind|is_any_handle_kind or field.kind|is_interface_kind %}
|
| mojo::internal::EncodeHandle(&data.f_{{field.name}}, handles);
|
| {%- endif %}
|
| return;
|
| @@ -78,11 +76,9 @@ void {{class_name}}::DecodePointersAndHandles(
|
| switch (tag) {
|
| {%- for field in union.fields %}
|
| case {{enum_name}}::{{field.name|upper}}: {
|
| -{%- if field.kind|is_object_kind and not field.kind|is_union_kind %}
|
| - mojo::internal::Decode(
|
| - reinterpret_cast<{{field.kind|cpp_field_type}}*>(&data.f_{{field.name}}),
|
| - handles);
|
| -{%- elif field.kind|is_any_handle_kind %}
|
| +{%- if field.kind|is_object_kind %}
|
| + mojo::internal::Decode(&data.f_{{field.name}}, handles);
|
| +{%- elif field.kind|is_any_handle_kind or field.kind|is_interface_kind %}
|
| mojo::internal::DecodeHandle(&data.f_{{field.name}}, handles);
|
| {%- endif %}
|
| return;
|
|
|