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
This commit is contained in:
Philip Withnall 2016-02-24 23:53:08 +00:00 committed by Philip Withnall
parent 569b1dc9a8
commit ec81889c35

View File

@ -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;