Index: third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/struct_definition.tmpl |
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/struct_definition.tmpl b/third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/struct_definition.tmpl |
index f65298fe72cbef2f6cfba8e338fc23ad577f669e..f5b62a9eeb285e21a05f30faa3060d0cd72071e7 100644 |
--- a/third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/struct_definition.tmpl |
+++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/struct_definition.tmpl |
@@ -50,13 +50,12 @@ if (decoder{{level+1}} == null) { |
List<{{kind.key_kind|dart_type}}> keys{{level}}; |
List<{{kind.value_kind|dart_type}}> values{{level}}; |
{ |
- {{decode('keys'~level, kind.key_kind|array, 'bindings.DataHeader.kHeaderSize', 0, level+1)|indent(4)}} |
+ {{decode('keys'~level, kind.key_kind|array, 'DataHeader.HEADER_SIZE', 0, level+1)|indent(4)}} |
} |
{ |
{{decode('values'~level, kind.value_kind|array('keys'~level~'.length'), 'bindings.DataHeader.kHeaderSize + bindings.kPointerSize', 0, level+1)|indent(4)}} |
} |
- {{variable}} = new Map<{{kind.key_kind|dart_type}}, {{kind.value_kind|dart_type}}>.fromIterables( |
- keys{{level}}, values{{level}}); |
+ {{variable}} = new Map<{{kind.key_kind|dart_type}}, {{kind.value_kind|dart_type}}>.fromIterables(keys, values); |
{%- else %} |
var si{{level+1}} = decoder{{level+1}}.decodeDataHeaderForPointerArray({{kind|array_expected_length}}); |
{{variable}} = new {{kind|dart_type}}(si{{level+1}}.numFields); |
@@ -106,13 +105,11 @@ class {{struct|name}} extends bindings.Struct { |
return null; |
} |
{{struct|name}} result = new {{struct|name}}(); |
- |
+{%- if not struct.bytes %} |
+ decoder0.decodeDataHeader(); |
+{%- else %} |
var mainDataHeader = decoder0.decodeDataHeader(); |
- if ((mainDataHeader.size < kStructSize) || |
- (mainDataHeader.numFields < {{struct.packed.packed_fields|length}})) { |
- throw new bindings.MojoCodecError('Malformed header'); |
- } |
- |
+{%- endif %} |
{%- for byte in struct.bytes %} |
{%- for packed_field in byte.packed_fields %} |
if (mainDataHeader.numFields > {{packed_field.ordinal}}) { |