librsvg r1158 - trunk



Author: doml
Date: Tue Mar  4 16:44:17 2008
New Revision: 1158
URL: http://svn.gnome.org/viewvc/librsvg?rev=1158&view=rev

Log:
2008-03-04  Dominic Lachowicz <domlachowicz gmail com>

        * rsvg-image.c: rsvg-convert crashed with SIGSEGV in _rsvg_acquire_xlink_href_resource()
        (#520261)



Modified:
   trunk/ChangeLog
   trunk/configure.in
   trunk/rsvg-image.c

Modified: trunk/configure.in
==============================================================================
--- trunk/configure.in	(original)
+++ trunk/configure.in	Tue Mar  4 16:44:17 2008
@@ -22,7 +22,7 @@
 
 LIBRSVG_MAJOR_VERSION=2
 LIBRSVG_MINOR_VERSION=22
-LIBRSVG_MICRO_VERSION=1
+LIBRSVG_MICRO_VERSION=2
 AC_SUBST(LIBRSVG_MAJOR_VERSION)
 AC_SUBST(LIBRSVG_MINOR_VERSION)
 AC_SUBST(LIBRSVG_MICRO_VERSION)

Modified: trunk/rsvg-image.c
==============================================================================
--- trunk/rsvg-image.c	(original)
+++ trunk/rsvg-image.c	Tue Mar  4 16:44:17 2008
@@ -299,6 +299,17 @@
 
 #ifdef HAVE_GIO
 
+static void
+rsvg_free_error (GError ** err)
+{
+	if (err) {
+		if (*err) {
+			g_error_free (*err);
+			*err = NULL;
+		}
+	}
+}
+
 static GByteArray *
 rsvg_acquire_vfs_resource (const char *filename, const char *base_uri, GError ** error)
 {
@@ -307,7 +318,7 @@
     GFile *file;
     char *data;
     gsize size;
-    gboolean res;
+    gboolean res = FALSE;
 
     rsvg_return_val_if_fail (filename != NULL, NULL, error);
 
@@ -317,19 +328,19 @@
         if (base_uri != NULL) {
             GFile *base;
 
-            g_error_free (*error);
-            *error = NULL;
+			rsvg_free_error(error);
+			
+			g_object_unref (file);
 
-            g_object_unref (file);
             base = g_file_new_for_uri (base_uri);
             file = g_file_resolve_relative_path (base, filename);
             g_object_unref (base);
 
-            res = g_file_load_contents (file, NULL, &data, &size, NULL, error);
+			res = g_file_load_contents (file, NULL, &data, &size, NULL, error);
         }
     }
 
-    g_object_unref (file);
+	g_object_unref (file);
 
     if (res) {
         array = g_byte_array_new ();



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]