From a941660873ad4db42f1799e444d46d95721af840 Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Fri, 2 Jul 2010 11:14:28 -0400 Subject: [PATCH] Bug 623402 - schema compiler reports wrong line Don't reuse the GMarkupParseContext in order to avoid inaccurate line number reports. Fix a memory leak, too. --- gio/gschema-compile.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/gio/gschema-compile.c b/gio/gschema-compile.c index 33d6ea46f..89237239b 100644 --- a/gio/gschema-compile.c +++ b/gio/gschema-compile.c @@ -1552,14 +1552,9 @@ parse_gschema_files (gchar **files, GError **error) { GMarkupParser parser = { start_element, end_element, text }; - GMarkupParseContext *context; ParseState state = { 0, }; const gchar *filename; - context = g_markup_parse_context_new (&parser, - G_MARKUP_PREFIX_ERROR_POSITION, - &state, NULL); - state.enum_table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, enum_state_free); @@ -1571,9 +1566,14 @@ parse_gschema_files (gchar **files, while ((filename = *files++) != NULL) { + GMarkupParseContext *context; gchar *contents; gsize size; + context = g_markup_parse_context_new (&parser, + G_MARKUP_PREFIX_ERROR_POSITION, + &state, NULL); + if (!g_file_get_contents (filename, &contents, &size, error)) return FALSE; @@ -1588,6 +1588,8 @@ parse_gschema_files (gchar **files, g_prefix_error (error, "%s: ", filename); return FALSE; } + + g_markup_parse_context_free (context); } g_hash_table_unref (state.enum_table);