dtc: Fix memory leak in character literal parsing
The data struct used for parsing character literals was never freed
resulting in a few bytes leaked for every character.
Signed-off-by: Gabriel Smith <ga29smith@gmail.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
diff --git a/dtc-lexer.l b/dtc-lexer.l
index 40bbc87..c600603 100644
--- a/dtc-lexer.l
+++ b/dtc-lexer.l
@@ -189,16 +189,16 @@
if (d.len == 1) {
lexical_error("Empty character literal");
yylval.integer = 0;
- return DT_CHAR_LITERAL;
+ } else {
+ yylval.integer = (unsigned char)d.val[0];
+
+ if (d.len > 2)
+ lexical_error("Character literal has %d"
+ " characters instead of 1",
+ d.len - 1);
}
- yylval.integer = (unsigned char)d.val[0];
-
- if (d.len > 2)
- lexical_error("Character literal has %d"
- " characters instead of 1",
- d.len - 1);
-
+ data_free(d);
return DT_CHAR_LITERAL;
}