summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2023-04-12 22:05:49 +0300
committerSebastian Dröge <sebastian@centricular.com>2023-04-12 22:06:38 +0300
commit476d1e219c8119fd5160548d51731326848a4eb5 (patch)
treef48cd909d5d046d9c16fcb4c146a5be08d78345b
parent013610ed21e609ff14e6bf43cfbaa413cc6e7f6c (diff)
downloadorc-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.c8
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);