Date: Wednesday, February 3, 2016 @ 14:30:55 Author: jgc Revision: 258835
upgpkg: librsvg 2:2.40.13-1 Added: librsvg/trunk/bgo759084.patch Modified: librsvg/trunk/PKGBUILD -----------------+ PKGBUILD | 21 ++++++++++++++++++--- bgo759084.patch | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 3 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2016-02-03 13:00:20 UTC (rev 258834) +++ PKGBUILD 2016-02-03 13:30:55 UTC (rev 258835) @@ -2,7 +2,7 @@ # Maintainer: Jan de Groot <[email protected]> pkgname=librsvg -pkgver=2.40.11 +pkgver=2.40.13 pkgrel=1 epoch=2 pkgdesc="A SVG viewing library" @@ -13,15 +13,30 @@ options=('!emptydirs') url="https://live.gnome.org/LibRsvg" install=librsvg.install -source=(https://download.gnome.org/sources/$pkgname/${pkgver:0:4}/$pkgname-$pkgver.tar.xz) -sha256sums=('611ac0f544debd0c9bf1ef5509c990d218e83dd1d8c83297075c4b29796a2e02') +source=(https://download.gnome.org/sources/$pkgname/${pkgver:0:4}/$pkgname-$pkgver.tar.xz + bgo759084.patch) +sha256sums=('4d6ea93ec05f5dabe7262d711d246a0a99b2311e215360dd3dcabd6afe3b9804' + 'd6cf5b318a89fb002a520c830c0666f0cb905d4d38322b2c41296fdd36d60b93') +prepare() { + cd $pkgname-$pkgver + patch -Np1 -i ../bgo759084.patch +} + build() { cd $pkgname-$pkgver ./configure --prefix=/usr --disable-static --enable-vala + + sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0 /g' -e 's/ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then/ func_append compile_command " -Wl,-O1,--as-needed"\n func_append finalize_command " -Wl,-O1,--as-needed"\n\0/' libtool + make } +check() { + cd $pkgname-$pkgver + make check +} + package() { cd $pkgname-$pkgver make DESTDIR="$pkgdir" install Added: bgo759084.patch =================================================================== --- bgo759084.patch (rev 0) +++ bgo759084.patch 2016-02-03 13:30:55 UTC (rev 258835) @@ -0,0 +1,53 @@ +From d937c691678803ceda6be701587d997ccd03a1da Mon Sep 17 00:00:00 2001 +From: Benjamin Otte <[email protected]> +Date: Fri, 29 Jan 2016 12:49:55 +0100 +Subject: Don't crash when filters don't exist + +We put a new surface on the stack if a filter existed by name but we +didn't pop it if the name didn't resolve to a real filter. + +New test: crash/bug759084.svg + +https://bugzilla.gnome.org/show_bug.cgi?id=759084 +--- + rsvg-cairo-draw.c | 6 +++--- + tests/fixtures/crash/bug759084.svg | 9 +++++++++ + 2 files changed, 12 insertions(+), 3 deletions(-) + create mode 100644 tests/fixtures/crash/bug759084.svg + +diff --git a/rsvg-cairo-draw.c b/rsvg-cairo-draw.c +index 4d8fbc2..4152cb7 100644 +--- a/rsvg-cairo-draw.c ++++ b/rsvg-cairo-draw.c +@@ -819,10 +819,10 @@ rsvg_cairo_pop_render_stack (RsvgDrawingCtx * ctx) + cairo_surface_t *output; + + filter = rsvg_acquire_node (ctx, state->filter); +- if (filter && RSVG_NODE_TYPE (filter) == RSVG_NODE_TYPE_FILTER) { +- output = render->surfaces_stack->data; +- render->surfaces_stack = g_list_delete_link (render->surfaces_stack, render->surfaces_stack); ++ output = render->surfaces_stack->data; ++ render->surfaces_stack = g_list_delete_link (render->surfaces_stack, render->surfaces_stack); + ++ if (filter && RSVG_NODE_TYPE (filter) == RSVG_NODE_TYPE_FILTER) { + needs_destroy = TRUE; + surface = rsvg_filter_render ((RsvgFilter *) filter, output, ctx, &render->bbox, "2103"); + /* Don't destroy the output surface, it's owned by child_cr */ +diff --git a/tests/fixtures/crash/bug759084.svg b/tests/fixtures/crash/bug759084.svg +new file mode 100644 +index 0000000..9e8f8f1 +--- /dev/null ++++ b/tests/fixtures/crash/bug759084.svg +@@ -0,0 +1,9 @@ ++<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10"> ++ <defs> ++ <filter id="filter"> ++ </filter> ++ </defs> ++ <g filter="url(#filter)"> ++ <rect fill="red" width="10" height="10" filter="url(#doesnotexist)" /> ++ </g> ++</svg> +-- +cgit v0.12 +
