diff options
author | Christian Persch <chpe@gnome.org> | 2012-01-27 20:44:57 +0100 |
---|---|---|
committer | Christian Persch <chpe@gnome.org> | 2012-01-27 20:44:57 +0100 |
commit | ad697bfd6c72835c0fe88dd65d0512ea596f3c97 (patch) | |
tree | 884983cf501aebc6fb1be7ec320c8c3efbe281ca | |
parent | ada09403736c41465fa23fea9ef09e9c837d1685 (diff) | |
download | librsvg-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.c | 24 |
1 files changed, 16 insertions, 8 deletions
@@ -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); |