summaryrefslogtreecommitdiff
path: root/dtc-lexer.l
diff options
context:
space:
mode:
authorGabriel Smith <ga29smith@gmail.com>2016-12-11 15:13:16 -0500
committerDavid Gibson <david@gibson.dropbear.id.au>2016-12-12 10:30:51 +1100
commitf88865469b65455bdc4ebe7ad8601fafea9b8ef3 (patch)
tree6119aaa95db0ddcdcd6c09df4ba58ed545234556 /dtc-lexer.l
parent00fbb8696b665ab138406cc9522793f2096031a0 (diff)
downloaddevice-tree-compiler-f88865469b65455bdc4ebe7ad8601fafea9b8ef3.tar.gz
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>
Diffstat (limited to 'dtc-lexer.l')
-rw-r--r--dtc-lexer.l16
1 files changed, 8 insertions, 8 deletions
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 @@ static void lexical_error(const char *fmt, ...);
if (d.len == 1) {
lexical_error("Empty character literal");
yylval.integer = 0;
- return DT_CHAR_LITERAL;
- }
-
- yylval.integer = (unsigned char)d.val[0];
+ } 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);
+ if (d.len > 2)
+ lexical_error("Character literal has %d"
+ " characters instead of 1",
+ d.len - 1);
+ }
+ data_free(d);
return DT_CHAR_LITERAL;
}