[glib] fix memory leak in g_bookmark_file_parse()
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] fix memory leak in g_bookmark_file_parse()
- Date: Sat, 4 Feb 2012 15:10:01 +0000 (UTC)
commit 59a0134de8ba98d05d97d8fcded4e86bac7fe606
Author: Ravi Sankar Guntur <ravi g samsung com>
Date: Sat Feb 4 00:14:56 2012 +0530
fix memory leak in g_bookmark_file_parse()
https://bugzilla.gnome.org/show_bug.cgi?id=669334
Signed-off-by: Ravi Sankar Guntur <ravi g samsung com>
glib/gbookmarkfile.c | 48 ++++++++++++++++++++----------------------------
1 files changed, 20 insertions(+), 28 deletions(-)
---
diff --git a/glib/gbookmarkfile.c b/glib/gbookmarkfile.c
index 7f1422a..5b5ff50 100644
--- a/glib/gbookmarkfile.c
+++ b/glib/gbookmarkfile.c
@@ -1418,9 +1418,9 @@ static const GMarkupParser markup_parser =
static gboolean
g_bookmark_file_parse (GBookmarkFile *bookmark,
- const gchar *buffer,
- gsize length,
- GError **error)
+ const gchar *buffer,
+ gsize length,
+ GError **error)
{
GMarkupParseContext *context;
ParseData *parse_data;
@@ -1431,6 +1431,9 @@ g_bookmark_file_parse (GBookmarkFile *bookmark,
if (!buffer)
return FALSE;
+
+ parse_error = NULL;
+ end_error = NULL;
if (length == (gsize) -1)
length = strlen (buffer);
@@ -1443,30 +1446,22 @@ g_bookmark_file_parse (GBookmarkFile *bookmark,
parse_data,
(GDestroyNotify) parse_data_free);
- parse_error = NULL;
retval = g_markup_parse_context_parse (context,
buffer,
length,
&parse_error);
if (!retval)
- {
- g_propagate_error (error, parse_error);
-
- return FALSE;
- }
-
- end_error = NULL;
- retval = g_markup_parse_context_end_parse (context, &end_error);
- if (!retval)
- {
- g_propagate_error (error, end_error);
-
- return FALSE;
- }
-
+ g_propagate_error (error, parse_error);
+ else
+ {
+ retval = g_markup_parse_context_end_parse (context, &end_error);
+ if (!retval)
+ g_propagate_error (error, end_error);
+ }
+
g_markup_parse_context_free (context);
-
- return TRUE;
+
+ return retval;
}
static gchar *
@@ -1685,14 +1680,11 @@ g_bookmark_file_load_from_data (GBookmarkFile *bookmark,
parse_error = NULL;
retval = g_bookmark_file_parse (bookmark, data, length, &parse_error);
+
if (!retval)
- {
- g_propagate_error (error, parse_error);
-
- return FALSE;
- }
-
- return TRUE;
+ g_propagate_error (error, parse_error);
+
+ return retval;
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]