diff --git a/examples/adw-demo-window.c b/examples/adw-demo-window.c index 3fcd6924bd7acbe7825dca00045ab2bd8a6dff55..01fbc7b854618f70cfb6c04f04d626eec61f43d3 100644 --- a/examples/adw-demo-window.c +++ b/examples/adw-demo-window.c @@ -270,8 +270,12 @@ file_chooser_response_cb (AdwDemoWindow *self, adw_avatar_get_size (self->avatar), gtk_widget_get_scale_factor (GTK_WIDGET (self))); - if (pixbuf != NULL) - gdk_pixbuf_save (pixbuf, g_file_get_path (file), "png", NULL, NULL); + if (pixbuf != NULL) { + g_autofree char *path = NULL; + + path = g_file_get_path (file); + gdk_pixbuf_save (pixbuf, path, "png", NULL, NULL); + } } g_object_unref (chooser); diff --git a/src/adw-avatar.c b/src/adw-avatar.c index a72f5bf6bfb0968e4125df476e358fcc4d65086c..4775545092c60b15b37a7851f56cff4245c0d835 100644 --- a/src/adw-avatar.c +++ b/src/adw-avatar.c @@ -700,6 +700,7 @@ adw_avatar_draw_to_pixbuf (AdwAvatar *self, { GtkSnapshot *snapshot; g_autoptr (GskRenderNode) node = NULL; + GdkPixbuf *avatar; cairo_surface_t *surface; cairo_t *cr; graphene_rect_t bounds; @@ -727,7 +728,11 @@ adw_avatar_draw_to_pixbuf (AdwAvatar *self, gsk_render_node_draw (node, cr); - return gdk_pixbuf_get_from_surface (surface, 0, 0, - bounds.size.width, - bounds.size.height); + avatar = gdk_pixbuf_get_from_surface (surface, 0, 0, + bounds.size.width, + bounds.size.height); + cairo_surface_destroy (surface); + cairo_destroy (cr); + + return avatar; }