summaryrefslogtreecommitdiffstats
path: root/main/ristretto
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 /main/ristretto
parent2fc423b42b5027e1edad7496eff4c9f511c7cf14 (diff)
downloadaports-2ec52cb037c5e9e784a508bc627a5add5d239d91.tar.bz2
aports-2ec52cb037c5e9e784a508bc627a5add5d239d91.tar.xz
main/ristretto: fix memleak
https://bugzilla.xfce.org/show_bug.cgi?id=7882
Diffstat (limited to 'main/ristretto')
-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 020137e62..b99a34a21 100644
--- a/main/ristretto/APKBUILD
+++ b/main/ristretto/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=ristretto
pkgver=0.0.93
-pkgrel=0
+pkgrel=1
pkgdesc="Ristretto is a image viewer for Xfce"
url="http://goodies.xfce.org/projects/applications/ristretto"
arch="all"
@@ -9,7 +9,18 @@ license="GPL-2"
depends="desktop-file-utils hicolor-icon-theme"
makedepends="libxfce4ui-dev dbus-glib-dev libexif-dev thunar-dev"
install=
-source="http://archive.xfce.org/src/apps/ristretto/0.0/ristretto-$pkgver.tar.bz2"
+source="http://archive.xfce.org/src/apps/ristretto/0.0/ristretto-$pkgver.tar.bz2
+ ristretto-0.0.93_memleak-fix.patch
+ "
+
+prepare() {
+ cd "$srcdir"/$pkgname-$pkgver
+ for i in $source; do
+ case $i in
+ *.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
+ esac
+ done
+}
build() {
cd "$srcdir"/$pkgname-$pkgver
@@ -25,4 +36,5 @@ package() {
cd "$srcdir"/$pkgname-$pkgver
make DESTDIR="$pkgdir" install || return 1
}
-md5sums="74dcdf0fcbf7039852b817732a91fb6c ristretto-0.0.93.tar.bz2"
+md5sums="74dcdf0fcbf7039852b817732a91fb6c ristretto-0.0.93.tar.bz2
+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 000000000..a780b9c3b
--- /dev/null
+++ b/main/ristretto/ristretto-0.0.93_memleak-fix.patch
@@ -0,0 +1,103 @@
+From 54035ac294a8544e41d0ec590ab0dbc0370e410b Mon Sep 17 00:00:00 2001
+From: Stephan Arts <stephan@xfce.org>
+Date: Thu, 11 Aug 2011 22:30:54 +0200
+Subject: [PATCH 1/3] Fix memory leak
+
+---
+ src/image.c | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/src/image.c b/src/image.c
+index 09fe562..987316d 100644
+--- a/src/image.c
++++ b/src/image.c
+@@ -639,6 +639,7 @@ cb_rstto_image_read_input_stream_ready (GObject *source_object, GAsyncResult *re
+ if(gdk_pixbuf_loader_write (image->priv->loader, (const guchar *)image->priv->buffer, read_bytes, &error) == FALSE)
+ {
+ g_input_stream_close (G_INPUT_STREAM (source_object), NULL, NULL);
++ g_object_unref (source_object);
+ g_object_unref (image);
+ }
+ else
+@@ -659,6 +660,7 @@ cb_rstto_image_read_input_stream_ready (GObject *source_object, GAsyncResult *re
+ {
+ /* OK */
+ g_input_stream_close (G_INPUT_STREAM (source_object), NULL, NULL);
++ g_object_unref (source_object);
+ gdk_pixbuf_loader_close (image->priv->loader, NULL);
+ g_object_unref (image);
+ }
+@@ -666,6 +668,7 @@ cb_rstto_image_read_input_stream_ready (GObject *source_object, GAsyncResult *re
+ {
+ /* I/O ERROR */
+ g_input_stream_close (G_INPUT_STREAM (source_object), NULL, NULL);
++ g_object_unref (source_object);
+ gdk_pixbuf_loader_close (image->priv->loader, NULL);
+ g_object_unref (image);
+ }
+--
+1.7.5.4
+
+
+From 8dfd7b9e3d455ccd76a454bd22472df1a06226d9 Mon Sep 17 00:00:00 2001
+From: Stephan Arts <stephan@xfce.org>
+Date: Sat, 6 Aug 2011 12:01:26 +0200
+Subject: [PATCH 2/3] Emit the 'iter-changed' signal when the image-list is
+ empty.
+
+---
+ src/image_list.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/src/image_list.c b/src/image_list.c
+index 7f7af18..1344f3c 100644
+--- a/src/image_list.c
++++ b/src/image_list.c
+@@ -269,6 +269,7 @@ rstto_image_list_remove_image (RsttoImageList *image_list, RsttoImage *image)
+ if (rstto_image_list_iter_get_image (iter->data) == image)
+ {
+ ((RsttoImageListIter *)(iter->data))->priv->image = NULL;
++ g_signal_emit (G_OBJECT (iter->data), rstto_image_list_iter_signals[RSTTO_IMAGE_LIST_ITER_SIGNAL_CHANGED], 0, NULL);
+ }
+ }
+ iter = g_slist_next (iter);
+--
+1.7.5.4
+
+
+From 4ba20c52980d31f508369a6a2dff6a67bfa2bae1 Mon Sep 17 00:00:00 2001
+From: Stephan Arts <stephan@xfce.org>
+Date: Fri, 12 Aug 2011 08:02:34 +0200
+Subject: [PATCH 3/3] Free gtkanimationiter
+
+---
+ src/image.c | 13 +++++++++++++
+ 1 files changed, 13 insertions(+), 0 deletions(-)
+
+diff --git a/src/image.c b/src/image.c
+index 987316d..4ce323f 100644
+--- a/src/image.c
++++ b/src/image.c
+@@ -725,6 +725,19 @@ static void
+ cb_rstto_image_area_prepared (GdkPixbufLoader *loader, RsttoImage *image)
+ {
+ gint timeout = 0;
++
++ if (image->priv->animation)
++ {
++ g_object_unref (image->priv->animation);
++ image->priv->animation = NULL;
++ }
++
++ if (image->priv->iter)
++ {
++ g_object_unref (image->priv->iter);
++ image->priv->iter = NULL;
++ }
++
+ image->priv->animation = gdk_pixbuf_loader_get_animation (loader);
+ image->priv->iter = gdk_pixbuf_animation_get_iter (image->priv->animation, NULL);
+ if (image->priv->pixbuf)
+--
+1.7.5.4
+