[librsvg] Don't do fallback for data: URIs



commit ad697bfd6c72835c0fe88dd65d0512ea596f3c97
Author: Christian Persch <chpe gnome org>
Date:   Fri Jan 27 20:44:57 2012 +0100

    Don't do fallback for data: URIs
    
    When the scheme is "data", just treat it like that, and don't fall back
    to trying file or gvfs. Also make sure to always set the error!

 rsvg-io.c |   24 ++++++++++++++++--------
 1 files changed, 16 insertions(+), 8 deletions(-)
---
diff --git a/rsvg-io.c b/rsvg-io.c
index 8376367..c0c609a 100644
--- a/rsvg-io.c
+++ b/rsvg-io.c
@@ -184,12 +184,14 @@ _rsvg_io_acquire_data (const char *href,
 {
     guint8 *data;
 
-    if (!(href && *href))
+    if (!(href && *href)) {
+        g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+                            "Invalid URI");
         return NULL;
+    }
 
-    if (strncmp (href, "data:", 5) == 0 &&
-        (data = rsvg_acquire_base64_data (href, NULL, len, NULL)))
-      return data;
+    if (strncmp (href, "data:", 5) == 0)
+      return rsvg_acquire_base64_data (href, NULL, len, error);
 
     if ((data = rsvg_acquire_file_data (href, base_uri, len, NULL)))
       return data;
@@ -209,12 +211,18 @@ _rsvg_io_acquire_stream (const char *href,
     guint8 *data;
     gsize len;
 
-    if (!(href && *href))
+    if (!(href && *href)) {
+        g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+                            "Invalid URI");
         return NULL;
+    }
 
-    if (strncmp (href, "data:", 5) == 0 &&
-        (data = rsvg_acquire_base64_data (href, NULL, &len, NULL)))
-      return g_memory_input_stream_new_from_data (data, len, (GDestroyNotify) g_free);
+    if (strncmp (href, "data:", 5) == 0) {
+        if (!(data = rsvg_acquire_base64_data (href, NULL, &len, error)))
+            return NULL;
+
+        return g_memory_input_stream_new_from_data (data, len, (GDestroyNotify) g_free);
+    }
 
     if ((data = rsvg_acquire_file_data (href, base_uri, &len, NULL)))
       return g_memory_input_stream_new_from_data (data, len, (GDestroyNotify) g_free);



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