aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/intel/common/gen_decoder.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/intel/common/gen_decoder.c b/src/intel/common/gen_decoder.c
index 3ea2eaf8dbf..de50c4466bc 100644
--- a/src/intel/common/gen_decoder.c
+++ b/src/intel/common/gen_decoder.c
@@ -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) {