diff options
author | Philip Withnall <philip@tecnocode.co.uk> | 2016-02-24 23:53:08 +0000 |
---|---|---|
committer | Philip Withnall <philip.withnall@collabora.co.uk> | 2016-02-26 08:22:02 +0000 |
commit | 1746e1dc4604e3498c4b9f45dfa5c85f0fa2440d (patch) | |
tree | 803b6316a96759bbf9183df6e4764e5e71768755 | |
parent | f5cc8f5d29a81da7d0f875bd4b0588df3a96ac0f (diff) | |
download | gobject-introspection-1746e1dc4604e3498c4b9f45dfa5c85f0fa2440d.tar.gz |
girepository: Fix some memory leaks in gdump.c
These were leaking memory when dumping introspection data from projects
for building their GIR files. That’s generally not a problem, unless
you’re trying to build the project with -fsanitize=address, which causes
the GIR build phase to error out due to leaking memory.
https://bugzilla.gnome.org/show_bug.cgi?id=762653
-rw-r--r-- | girepository/gdump.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/girepository/gdump.c b/girepository/gdump.c index a72841fe..b60a5dce 100644 --- a/girepository/gdump.c +++ b/girepository/gdump.c @@ -204,6 +204,7 @@ dump_signals (GType type, GOutputStream *out) } goutput_write (out, " </signal>\n"); } + g_free (sig_ids); } static void @@ -249,6 +250,8 @@ dump_object_type (GType type, const char *symbol, GOutputStream *out) escaped_printf (out, " <implements name=\"%s\"/>\n", g_type_name (itype)); } + g_free (interfaces); + dump_properties (type, out); dump_signals (type, out); goutput_write (out, " </class>\n"); @@ -280,6 +283,8 @@ dump_interface_type (GType type, const char *symbol, GOutputStream *out) escaped_printf (out, " <prerequisite name=\"%s\"/>\n", g_type_name (itype)); } + g_free (interfaces); + dump_properties (type, out); dump_signals (type, out); goutput_write (out, " </interface>\n"); @@ -379,6 +384,7 @@ dump_fundamental_type (GType type, const char *symbol, GOutputStream *out) escaped_printf (out, " <implements name=\"%s\"/>\n", g_type_name (itype)); } + g_free (interfaces); goutput_write (out, " </fundamental>\n"); } @@ -471,6 +477,8 @@ g_irepository_dump (const char *arg, GError **error) input_file = g_file_new_for_path (args[0]); output_file = g_file_new_for_path (args[1]); + g_strfreev (args); + input = g_file_read (input_file, NULL, error); if (input == NULL) return FALSE; |