diff options
author | Gabriel Smith <ga29smith@gmail.com> | 2016-12-11 15:13:16 -0500 |
---|---|---|
committer | David Gibson <david@gibson.dropbear.id.au> | 2016-12-12 10:30:51 +1100 |
commit | f88865469b65455bdc4ebe7ad8601fafea9b8ef3 (patch) | |
tree | 6119aaa95db0ddcdcd6c09df4ba58ed545234556 /dtc-lexer.l | |
parent | 00fbb8696b665ab138406cc9522793f2096031a0 (diff) | |
download | device-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.l | 16 |
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; } |