summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Persch <chpe@gnome.org>2012-01-27 20:44:57 +0100
committerChristian Persch <chpe@gnome.org>2012-01-27 20:44:57 +0100
commitad697bfd6c72835c0fe88dd65d0512ea596f3c97 (patch)
tree884983cf501aebc6fb1be7ec320c8c3efbe281ca
parentada09403736c41465fa23fea9ef09e9c837d1685 (diff)
downloadlibrsvg-ad697bfd6c72835c0fe88dd65d0512ea596f3c97.tar.gz
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!
-rw-r--r--rsvg-io.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/rsvg-io.c b/rsvg-io.c
index 83763671..c0c609a4 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);