File: 916060_bugfix.patch

package info (click to toggle)
t4kcommon 0.1.1-13
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,472 kB
  • sloc: sh: 10,688; ansic: 7,087; makefile: 102; sed: 16
file content (32 lines) | stat: -rw-r--r-- 1,323 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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<num> 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);