- sequence->p.index = index;
- sequence->scope = new_definition_scope(parent_scope, field_name);
- len_parent = sequence_declaration->len_declaration->p.definition_new(&sequence_declaration->len_declaration->p,
- parent_scope,
- g_quark_from_static_string("length"), 0);
- sequence->len =
+ /*
+ * Use INT_MAX order to ensure that all fields of the parent
+ * scope are seen as being prior to this scope.
+ */
+ sequence->p.index = root_name ? INT_MAX : index;
+ sequence->p.name = field_name;
+ sequence->p.path = new_definition_path(parent_scope, field_name, root_name);
+ sequence->scope = new_definition_scope(parent_scope, field_name, root_name);
+ ret = register_field_definition(field_name, &sequence->p,
+ parent_scope);
+ assert(!ret);
+ len_parent = lookup_definition(sequence->scope->scope_path,
+ sequence_declaration->length_name,
+ parent_scope);
+ if (!len_parent) {
+ printf("[error] Lookup for sequence length field failed.\n");
+ goto error;
+ }
+ sequence->length =