summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Withnall <philip@tecnocode.co.uk>2016-02-24 23:53:08 +0000
committerPhilip Withnall <philip.withnall@collabora.co.uk>2016-02-26 08:22:02 +0000
commit1746e1dc4604e3498c4b9f45dfa5c85f0fa2440d (patch)
tree803b6316a96759bbf9183df6e4764e5e71768755
parentf5cc8f5d29a81da7d0f875bd4b0588df3a96ac0f (diff)
downloadgobject-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.c8
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;