summaryrefslogtreecommitdiffstats
path: root/bus/desktop-file.c
diff options
context:
space:
mode:
Diffstat (limited to 'bus/desktop-file.c')
-rw-r--r--bus/desktop-file.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/bus/desktop-file.c b/bus/desktop-file.c
index 407044c9..d798bb12 100644
--- a/bus/desktop-file.c
+++ b/bus/desktop-file.c
@@ -430,6 +430,8 @@ parse_section_start (BusDesktopFileParser *parser, DBusError *error)
if (open_section (parser, section_name) == NULL)
{
dbus_free (section_name);
+ parser_free (parser);
+ BUS_SET_OOM (error);
return FALSE;
}
@@ -527,6 +529,7 @@ parse_key_value (BusDesktopFileParser *parser, DBusError *error)
{
dbus_free (value);
parser_free (parser);
+ BUS_SET_OOM (error);
return FALSE;
}
@@ -534,21 +537,26 @@ parse_key_value (BusDesktopFileParser *parser, DBusError *error)
{
dbus_free (value);
parser_free (parser);
+ BUS_SET_OOM (error);
return FALSE;
}
if (!_dbus_string_copy_len (&parser->data, key_start, key_end - key_start,
&key, 0))
{
+ _dbus_string_free (&key);
dbus_free (value);
parser_free (parser);
+ BUS_SET_OOM (error);
return FALSE;
}
if (!_dbus_string_steal_data (&key, &tmp))
{
+ _dbus_string_free (&key);
dbus_free (value);
parser_free (parser);
+ BUS_SET_OOM (error);
return FALSE;
}
@@ -633,7 +641,10 @@ bus_desktop_file_load (DBusString *filename,
}
if (!_dbus_string_init (&str))
- return NULL;
+ {
+ BUS_SET_OOM (error);
+ return NULL;
+ }
if (!_dbus_file_get_contents (&str, filename, error))
{