aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2011-08-12 06:44:21 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2011-08-12 06:44:21 +0000
commit2ec52cb037c5e9e784a508bc627a5add5d239d91 (patch)
treed7706f54e91e2b010e95407345bbd52d250a09b7
parent2fc423b42b5027e1edad7496eff4c9f511c7cf14 (diff)
downloadalpine_aports-2ec52cb037c5e9e784a508bc627a5add5d239d91.tar.bz2
alpine_aports-2ec52cb037c5e9e784a508bc627a5add5d239d91.tar.xz
alpine_aports-2ec52cb037c5e9e784a508bc627a5add5d239d91.zip
main/ristretto: fix memleak
https://bugzilla.xfce.org/show_bug.cgi?id=7882
-rw-r--r--main/ristretto/APKBUILD18
-rw-r--r--main/ristretto/ristretto-0.0.93_memleak-fix.patch103
2 files changed, 118 insertions, 3 deletions
diff --git a/main/ristretto/APKBUILD b/main/ristretto/APKBUILD
index 020137e62a..b99a34a219 100644
--- a/main/ristretto/APKBUILD
+++ b/main/ristretto/APKBUILD
@@ -1,7 +1,7 @@
1# Maintainer: Natanael Copa <ncopa@alpinelinux.org> 1# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
2pkgname=ristretto 2pkgname=ristretto
3pkgver=0.0.93 3pkgver=0.0.93
4pkgrel=0 4pkgrel=1
5pkgdesc="Ristretto is a image viewer for Xfce" 5pkgdesc="Ristretto is a image viewer for Xfce"
6url="http://goodies.xfce.org/projects/applications/ristretto" 6url="http://goodies.xfce.org/projects/applications/ristretto"
7arch="all" 7arch="all"
@@ -9,7 +9,18 @@ license="GPL-2"
9depends="desktop-file-utils hicolor-icon-theme" 9depends="desktop-file-utils hicolor-icon-theme"
10makedepends="libxfce4ui-dev dbus-glib-dev libexif-dev thunar-dev" 10makedepends="libxfce4ui-dev dbus-glib-dev libexif-dev thunar-dev"
11install= 11install=
12source="http://archive.xfce.org/src/apps/ristretto/0.0/ristretto-$pkgver.tar.bz2" 12source="http://archive.xfce.org/src/apps/ristretto/0.0/ristretto-$pkgver.tar.bz2
13 ristretto-0.0.93_memleak-fix.patch
14 "
15
16prepare() {
17 cd "$srcdir"/$pkgname-$pkgver
18 for i in $source; do
19 case $i in
20 *.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
21 esac
22 done
23}
13 24
14build() { 25build() {
15 cd "$srcdir"/$pkgname-$pkgver 26 cd "$srcdir"/$pkgname-$pkgver
@@ -25,4 +36,5 @@ package() {
25 cd "$srcdir"/$pkgname-$pkgver 36 cd "$srcdir"/$pkgname-$pkgver
26 make DESTDIR="$pkgdir" install || return 1 37 make DESTDIR="$pkgdir" install || return 1
27} 38}
28md5sums="74dcdf0fcbf7039852b817732a91fb6c ristretto-0.0.93.tar.bz2" 39md5sums="74dcdf0fcbf7039852b817732a91fb6c ristretto-0.0.93.tar.bz2
408cf982058356e06bcdcb5d41c91856aa ristretto-0.0.93_memleak-fix.patch"
diff --git a/main/ristretto/ristretto-0.0.93_memleak-fix.patch b/main/ristretto/ristretto-0.0.93_memleak-fix.patch
new file mode 100644
index 0000000000..a780b9c3b2
--- /dev/null
+++ b/main/ristretto/ristretto-0.0.93_memleak-fix.patch
@@ -0,0 +1,103 @@
1From 54035ac294a8544e41d0ec590ab0dbc0370e410b Mon Sep 17 00:00:00 2001
2From: Stephan Arts <stephan@xfce.org>
3Date: Thu, 11 Aug 2011 22:30:54 +0200
4Subject: [PATCH 1/3] Fix memory leak
5
6---
7 src/image.c | 3 +++
8 1 files changed, 3 insertions(+), 0 deletions(-)
9
10diff --git a/src/image.c b/src/image.c
11index 09fe562..987316d 100644
12--- a/src/image.c
13+++ b/src/image.c
14@@ -639,6 +639,7 @@ cb_rstto_image_read_input_stream_ready (GObject *source_object, GAsyncResult *re
15 if(gdk_pixbuf_loader_write (image->priv->loader, (const guchar *)image->priv->buffer, read_bytes, &error) == FALSE)
16 {
17 g_input_stream_close (G_INPUT_STREAM (source_object), NULL, NULL);
18+ g_object_unref (source_object);
19 g_object_unref (image);
20 }
21 else
22@@ -659,6 +660,7 @@ cb_rstto_image_read_input_stream_ready (GObject *source_object, GAsyncResult *re
23 {
24 /* OK */
25 g_input_stream_close (G_INPUT_STREAM (source_object), NULL, NULL);
26+ g_object_unref (source_object);
27 gdk_pixbuf_loader_close (image->priv->loader, NULL);
28 g_object_unref (image);
29 }
30@@ -666,6 +668,7 @@ cb_rstto_image_read_input_stream_ready (GObject *source_object, GAsyncResult *re
31 {
32 /* I/O ERROR */
33 g_input_stream_close (G_INPUT_STREAM (source_object), NULL, NULL);
34+ g_object_unref (source_object);
35 gdk_pixbuf_loader_close (image->priv->loader, NULL);
36 g_object_unref (image);
37 }
38--
391.7.5.4
40
41
42From 8dfd7b9e3d455ccd76a454bd22472df1a06226d9 Mon Sep 17 00:00:00 2001
43From: Stephan Arts <stephan@xfce.org>
44Date: Sat, 6 Aug 2011 12:01:26 +0200
45Subject: [PATCH 2/3] Emit the 'iter-changed' signal when the image-list is
46 empty.
47
48---
49 src/image_list.c | 1 +
50 1 files changed, 1 insertions(+), 0 deletions(-)
51
52diff --git a/src/image_list.c b/src/image_list.c
53index 7f7af18..1344f3c 100644
54--- a/src/image_list.c
55+++ b/src/image_list.c
56@@ -269,6 +269,7 @@ rstto_image_list_remove_image (RsttoImageList *image_list, RsttoImage *image)
57 if (rstto_image_list_iter_get_image (iter->data) == image)
58 {
59 ((RsttoImageListIter *)(iter->data))->priv->image = NULL;
60+ g_signal_emit (G_OBJECT (iter->data), rstto_image_list_iter_signals[RSTTO_IMAGE_LIST_ITER_SIGNAL_CHANGED], 0, NULL);
61 }
62 }
63 iter = g_slist_next (iter);
64--
651.7.5.4
66
67
68From 4ba20c52980d31f508369a6a2dff6a67bfa2bae1 Mon Sep 17 00:00:00 2001
69From: Stephan Arts <stephan@xfce.org>
70Date: Fri, 12 Aug 2011 08:02:34 +0200
71Subject: [PATCH 3/3] Free gtkanimationiter
72
73---
74 src/image.c | 13 +++++++++++++
75 1 files changed, 13 insertions(+), 0 deletions(-)
76
77diff --git a/src/image.c b/src/image.c
78index 987316d..4ce323f 100644
79--- a/src/image.c
80+++ b/src/image.c
81@@ -725,6 +725,19 @@ static void
82 cb_rstto_image_area_prepared (GdkPixbufLoader *loader, RsttoImage *image)
83 {
84 gint timeout = 0;
85+
86+ if (image->priv->animation)
87+ {
88+ g_object_unref (image->priv->animation);
89+ image->priv->animation = NULL;
90+ }
91+
92+ if (image->priv->iter)
93+ {
94+ g_object_unref (image->priv->iter);
95+ image->priv->iter = NULL;
96+ }
97+
98 image->priv->animation = gdk_pixbuf_loader_get_animation (loader);
99 image->priv->iter = gdk_pixbuf_animation_get_iter (image->priv->animation, NULL);
100 if (image->priv->pixbuf)
101--
1021.7.5.4
103