[fidl][go] Table presence fields are always even
Now that all tables have I_unknownData fields, createMarshaler
can safely assume that all table presence fields are always
even numbered.
Change-Id: I45aa4e75d55d61d6a0cce1361e8676b5ec119f05
Reviewed-on: https://fuchsia-review.googlesource.com/c/third_party/go/+/439060
Reviewed-by: Pascal Perez <pascallouis@google.com>
Commit-Queue: Felix Zhu <fcz@google.com>
diff --git a/src/syscall/zx/fidl/encoding_new.go b/src/syscall/zx/fidl/encoding_new.go
index 52c4480..1656098 100644
--- a/src/syscall/zx/fidl/encoding_new.go
+++ b/src/syscall/zx/fidl/encoding_new.go
@@ -307,20 +307,14 @@
presenceOffsets []uintptr
)
- // If a table has an I_unknownData field, then all presence fields must be
- // odd-numbered. If there is no I_unknownData field, then all presence
- // fields must be even numbered
- presenceFieldOddness := 1
-
// - structs, unions, and xunions have fields one after the other;
// - tables have a field, followed by a bool presence indicator, etc.
for index, field := range dataFields(typ) {
if (kind == xunionTag || kind == tableTag) && isUnknownDataField(field.Name) {
- presenceFieldOddness = 0
continue
}
- if kind == tableTag && index%2 == presenceFieldOddness {
+ if kind == tableTag && index%2 == 0 {
// Presence field
if field.Type.Kind() != reflect.Bool {
return nil, errors.New("incorrect presence field on " + nicefmt(typ))