summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Garber <jgarber1@ualberta.ca>2019-05-16 22:27:45 -0600
committerPatrick Georgi <pgeorgi@google.com>2019-05-23 09:02:07 +0000
commit9742ae1d11dab3357835fab7d7e3577dde4e0480 (patch)
tree2b72d9fdbbc7508fecf42acf6438092150714edc
parent4b688ab3fe6a8db4985a6e6cdad5def661f4066a (diff)
util/romcc: Fix memory leak
The 'new_type' function already allocates memory, so it is only necessary to clone the existing type if this function is not called. Change-Id: I47065204c5f4b6bab022bd7ccf19838c3ce1f86e Signed-off-by: Jacob Garber <jgarber1@ualberta.ca> Found-by: Coverity Scan CID 1129106 Reviewed-on: https://review.coreboot.org/c/coreboot/+/32921 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Patrick Georgi <pgeorgi@google.com>
-rw-r--r--util/romcc/romcc.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/util/romcc/romcc.c b/util/romcc/romcc.c
index 285b0237f4..d60a9a7f83 100644
--- a/util/romcc/romcc.c
+++ b/util/romcc/romcc.c
@@ -12601,7 +12601,9 @@ static struct type *struct_declarator(
}
type = new_type(TYPE_BITFIELD, type, 0);
type->elements = value->u.cval;
- }
+ } else
+ type = clone_type(0, type);
+
return type;
}
@@ -12656,7 +12658,6 @@ static struct type *struct_or_union_specifier(
done = 0;
eat(state, TOK_COMMA);
}
- type = clone_type(0, type);
type->field_ident = fident;
if (*next) {
*next = new_type(type_join, *next, type);