genxml: Fix decoder for groups with multiple fields.
If you have something like: <group count="0" start="96" size="32"> <field name="Entry_0" start="0" end="15" type="GATHER_CONSTANT_ENTRY"/> <field name="Entry_1" start="16" end="31" type="GATHER_CONSTANT_ENTRY"/> </group> We would reset ctx->group_count to 0 after processing the first field, so the second would not have a group count. This is largely untested, as the only groups with multiple fields are packets we don't emit in Mesa. Found by inspection. Acked-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
This commit is contained in:
parent
df2d55ba57
commit
d1b949282f
|
@ -414,11 +414,9 @@ start_element(void *data, const char *element_name, const char **atts)
|
|||
&ctx->group->group_count, &ctx->group->elem_size,
|
||||
&ctx->group->variable);
|
||||
} else if (strcmp(element_name, "field") == 0) {
|
||||
do {
|
||||
for (int g = 0; g < MAX2(ctx->group->group_count, 1); g++) {
|
||||
ctx->fields[ctx->nfields++] = create_field(ctx, atts);
|
||||
if (ctx->group->group_count)
|
||||
ctx->group->group_count--;
|
||||
} while (ctx->group->group_count > 0);
|
||||
}
|
||||
} else if (strcmp(element_name, "enum") == 0) {
|
||||
ctx->enoom = create_enum(ctx, name, atts);
|
||||
} else if (strcmp(element_name, "value") == 0) {
|
||||
|
|
Loading…
Reference in New Issue