diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2011-08-12 06:44:21 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2011-08-12 06:44:21 +0000 |
commit | 2ec52cb037c5e9e784a508bc627a5add5d239d91 (patch) | |
tree | d7706f54e91e2b010e95407345bbd52d250a09b7 | |
parent | 2fc423b42b5027e1edad7496eff4c9f511c7cf14 (diff) | |
download | alpine_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/APKBUILD | 18 | ||||
-rw-r--r-- | main/ristretto/ristretto-0.0.93_memleak-fix.patch | 103 |
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> |
2 | pkgname=ristretto | 2 | pkgname=ristretto |
3 | pkgver=0.0.93 | 3 | pkgver=0.0.93 |
4 | pkgrel=0 | 4 | pkgrel=1 |
5 | pkgdesc="Ristretto is a image viewer for Xfce" | 5 | pkgdesc="Ristretto is a image viewer for Xfce" |
6 | url="http://goodies.xfce.org/projects/applications/ristretto" | 6 | url="http://goodies.xfce.org/projects/applications/ristretto" |
7 | arch="all" | 7 | arch="all" |
@@ -9,7 +9,18 @@ license="GPL-2" | |||
9 | depends="desktop-file-utils hicolor-icon-theme" | 9 | depends="desktop-file-utils hicolor-icon-theme" |
10 | makedepends="libxfce4ui-dev dbus-glib-dev libexif-dev thunar-dev" | 10 | makedepends="libxfce4ui-dev dbus-glib-dev libexif-dev thunar-dev" |
11 | install= | 11 | install= |
12 | source="http://archive.xfce.org/src/apps/ristretto/0.0/ristretto-$pkgver.tar.bz2" | 12 | source="http://archive.xfce.org/src/apps/ristretto/0.0/ristretto-$pkgver.tar.bz2 |
13 | ristretto-0.0.93_memleak-fix.patch | ||
14 | " | ||
15 | |||
16 | prepare() { | ||
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 | ||
14 | build() { | 25 | build() { |
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 | } |
28 | md5sums="74dcdf0fcbf7039852b817732a91fb6c ristretto-0.0.93.tar.bz2" | 39 | md5sums="74dcdf0fcbf7039852b817732a91fb6c ristretto-0.0.93.tar.bz2 |
40 | 8cf982058356e06bcdcb5d41c91856aa 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 @@ | |||
1 | From 54035ac294a8544e41d0ec590ab0dbc0370e410b Mon Sep 17 00:00:00 2001 | ||
2 | From: Stephan Arts <stephan@xfce.org> | ||
3 | Date: Thu, 11 Aug 2011 22:30:54 +0200 | ||
4 | Subject: [PATCH 1/3] Fix memory leak | ||
5 | |||
6 | --- | ||
7 | src/image.c | 3 +++ | ||
8 | 1 files changed, 3 insertions(+), 0 deletions(-) | ||
9 | |||
10 | diff --git a/src/image.c b/src/image.c | ||
11 | index 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 | -- | ||
39 | 1.7.5.4 | ||
40 | |||
41 | |||
42 | From 8dfd7b9e3d455ccd76a454bd22472df1a06226d9 Mon Sep 17 00:00:00 2001 | ||
43 | From: Stephan Arts <stephan@xfce.org> | ||
44 | Date: Sat, 6 Aug 2011 12:01:26 +0200 | ||
45 | Subject: [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 | |||
52 | diff --git a/src/image_list.c b/src/image_list.c | ||
53 | index 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 | -- | ||
65 | 1.7.5.4 | ||
66 | |||
67 | |||
68 | From 4ba20c52980d31f508369a6a2dff6a67bfa2bae1 Mon Sep 17 00:00:00 2001 | ||
69 | From: Stephan Arts <stephan@xfce.org> | ||
70 | Date: Fri, 12 Aug 2011 08:02:34 +0200 | ||
71 | Subject: [PATCH 3/3] Free gtkanimationiter | ||
72 | |||
73 | --- | ||
74 | src/image.c | 13 +++++++++++++ | ||
75 | 1 files changed, 13 insertions(+), 0 deletions(-) | ||
76 | |||
77 | diff --git a/src/image.c b/src/image.c | ||
78 | index 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 | -- | ||
102 | 1.7.5.4 | ||
103 | |||