intel/decoder: ralloc_steal() values from spec context for fields and enums
authorJordan Justen <jordan.l.justen@intel.com>
Thu, 29 Dec 2022 20:10:47 +0000 (12:10 -0800)
committerJordan Justen <jordan.l.justen@intel.com>
Thu, 14 Sep 2023 18:05:16 +0000 (11:05 -0700)
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20593>

src/intel/common/intel_decoder.c

index f63afbd..123499a 100644 (file)
@@ -497,12 +497,14 @@ end_element(void *data, const char *name)
       struct intel_field *field = ctx->last_field;
       ctx->last_field = NULL;
       field->inline_enum.values = ctx->values;
+      ralloc_steal(field, ctx->values);
       field->inline_enum.nvalues = ctx->n_values;
       ctx->values = ralloc_array(ctx->spec, struct intel_value*, ctx->n_allocated_values = 2);
       ctx->n_values = 0;
    } else if (strcmp(name, "enum") == 0) {
       struct intel_enum *e = ctx->enoom;
       e->values = ctx->values;
+      ralloc_steal(e, ctx->values);
       e->nvalues = ctx->n_values;
       ctx->values = ralloc_array(ctx->spec, struct intel_value*, ctx->n_allocated_values = 2);
       ctx->n_values = 0;