diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2023-04-12 22:05:49 +0300 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2023-04-12 22:06:38 +0300 |
commit | 476d1e219c8119fd5160548d51731326848a4eb5 (patch) | |
tree | f48cd909d5d046d9c16fcb4c146a5be08d78345b | |
parent | 013610ed21e609ff14e6bf43cfbaa413cc6e7f6c (diff) | |
download | orc-476d1e219c8119fd5160548d51731326848a4eb5.tar.gz |
Fix memory leak when parsing a line with an error
Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/30>
-rw-r--r-- | orc/orcparse.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/orc/orcparse.c b/orc/orcparse.c index a938d2c..4ae2282 100644 --- a/orc/orcparse.c +++ b/orc/orcparse.c @@ -84,7 +84,7 @@ static void orc_parse_splat_error (OrcParseError **errors, int n_errors, char ** static void orc_parse_init (OrcParser *parser, const char *code, int enable_errors); static int orc_parse_has_data (OrcParser *parser); static void orc_parse_get_line (OrcParser *parser); -static void orc_parse_put_line (OrcParser *parser); +static void orc_parse_free_line (OrcParser *parser); static void orc_parse_copy_line (OrcParser *parser); static void orc_parse_find_line_length (OrcParser *parser); static void orc_parse_advance (OrcParser *parser); @@ -187,9 +187,8 @@ orc_parse_code (const char *code, OrcProgram ***programs, int *n_programs, } else { orc_parse_handle_opcode (parser, line); } - - orc_parse_put_line (parser); } + orc_parse_free_line (parser); if (parser->program) { orc_parse_sanity_check (parser, parser->program); @@ -865,12 +864,13 @@ orc_parse_advance (OrcParser *parser) static void orc_parse_copy_line (OrcParser *parser) { + orc_parse_free_line (parser); parser->line = strndup (parser->p, parser->line_length); parser->line_number++; } static void -orc_parse_put_line (OrcParser *parser) +orc_parse_free_line (OrcParser *parser) { if (parser->line) { free (parser->line); |