From 584ee28512a4f96f6619784bf6477562b3ed0ccf Mon Sep 17 00:00:00 2001 From: Matteo Bernardini Date: Wed, 25 Dec 2019 22:12:03 +0100 Subject: [PATCH] libraries/t4k_common: Fix segfaults with the newer librsvg. Signed-off-by: Matteo Bernardini --- libraries/t4k_common/916060_bugfix.patch | 32 ++++++++++++++++++++++ libraries/t4k_common/t4k_common.SlackBuild | 3 ++ 2 files changed, 35 insertions(+) create mode 100644 libraries/t4k_common/916060_bugfix.patch diff --git a/libraries/t4k_common/916060_bugfix.patch b/libraries/t4k_common/916060_bugfix.patch new file mode 100644 index 0000000000..e8c8a499f7 --- /dev/null +++ b/libraries/t4k_common/916060_bugfix.patch @@ -0,0 +1,32 @@ +Description: fix loading each frame from SVG sprites + rsvg_handle_get_desc returns null so next sscanf segfaults. Use instead iterating + up from zero for id frame%d +Author: cdonoghu@gmail.com +Origin: other +Forwarded: no +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +--- a/src/t4k_loaders.c ++++ b/src/t4k_loaders.c +@@ -213,14 +213,13 @@ + new_sprite = malloc(sizeof(sprite)); + new_sprite->default_img = render_svg_from_handle(file_handle, width, height, "#default"); + +- /* get number of frames from description */ +- sscanf(rsvg_handle_get_desc(file_handle), "%d", &new_sprite->num_frames); +- DEBUGMSG(debug_loaders, "load_svg_sprite(): loading %d frames\n", new_sprite->num_frames); +- +- for(i = 0; i < new_sprite->num_frames; i++) +- { +- sprintf(lay_name, "#frame%d", i); +- new_sprite->frame[i] = render_svg_from_handle(file_handle, width, height, lay_name); ++ /* get number of frames directly. End when #frame doesn't exist */ ++ new_sprite->num_frames = 0; ++ while(1) { ++ sprintf(lay_name, "#frame%d", new_sprite->num_frames); ++ if ( ! (rsvg_handle_has_sub(file_handle, lay_name)) ) break; ++ new_sprite->frame[new_sprite->num_frames] = render_svg_from_handle(file_handle, width, height, lay_name); ++ new_sprite->num_frames++; + } + + g_object_unref(file_handle); diff --git a/libraries/t4k_common/t4k_common.SlackBuild b/libraries/t4k_common/t4k_common.SlackBuild index 9fb0cad487..71f7238a31 100644 --- a/libraries/t4k_common/t4k_common.SlackBuild +++ b/libraries/t4k_common/t4k_common.SlackBuild @@ -54,6 +54,9 @@ find -L . \ # Patch for libpng16 (-current) (from Debian) patch -p1 < $CWD/libpng.patch +# Fix segfaults with then newer librsvg (from Debian) +patch -p1 < $CWD/916060_bugfix.patch + CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ ./configure \