summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2013-03-24 23:53:15 -0400
committerRay Strode <rstrode@redhat.com>2013-03-26 16:58:22 -0400
commit13c7020b80a103d6c4f213ed06d6eded2d30fbd5 (patch)
tree755db7d224e4bd18502da3e90381e14fd57c429f
parent5ed6e37e3c4c926039dc1ce0fc459e2aa2fd7036 (diff)
downloadmutter-13c7020b80a103d6c4f213ed06d6eded2d30fbd5.tar.gz
background: fix pixbuf leak in load_file_finish
g_task_propagate_pointer relinishes the GTask of its reference to the propagated pointer, so we need to unref it ourselves when we're done with it. https://bugzilla.gnome.org/show_bug.cgi?id=696157
-rw-r--r--src/compositor/meta-background.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/compositor/meta-background.c b/src/compositor/meta-background.c
index f75d881af..7d8f64c3e 100644
--- a/src/compositor/meta-background.c
+++ b/src/compositor/meta-background.c
@@ -1156,6 +1156,7 @@ meta_background_load_file_finish (MetaBackground *self,
int width, height, row_stride;
guchar *pixels;
gboolean has_alpha;
+ gboolean loaded = FALSE;
g_return_val_if_fail (g_task_is_valid (result, self), FALSE);
@@ -1164,7 +1165,7 @@ meta_background_load_file_finish (MetaBackground *self,
pixbuf = g_task_propagate_pointer (task, error);
if (pixbuf == NULL)
- return FALSE;
+ goto out;
task_data = g_task_get_task_data (task);
@@ -1190,7 +1191,7 @@ meta_background_load_file_finish (MetaBackground *self,
COGL_BITMAP_ERROR,
COGL_BITMAP_ERROR_FAILED,
_("background texture could not be created from file"));
- return FALSE;
+ goto out;
}
cogl_object_set_user_data (COGL_OBJECT (texture),
@@ -1206,8 +1207,12 @@ meta_background_load_file_finish (MetaBackground *self,
set_texture (self, texture);
clutter_content_invalidate (CLUTTER_CONTENT (self));
+ loaded = TRUE;
- return TRUE;
+out:
+ if (pixbuf != NULL)
+ g_object_unref (pixbuf);
+ return loaded;
}
/**