From 2ec52cb037c5e9e784a508bc627a5add5d239d91 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Fri, 12 Aug 2011 06:44:21 +0000 Subject: main/ristretto: fix memleak https://bugzilla.xfce.org/show_bug.cgi?id=7882 --- main/ristretto/APKBUILD | 18 +++- main/ristretto/ristretto-0.0.93_memleak-fix.patch | 103 ++++++++++++++++++++++ 2 files changed, 118 insertions(+), 3 deletions(-) create mode 100644 main/ristretto/ristretto-0.0.93_memleak-fix.patch (limited to 'main') 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 @@ # Maintainer: Natanael Copa 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 0000000000..a780b9c3b2 --- /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 +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 +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 +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 + -- cgit v1.2.3