summaryrefslogtreecommitdiff
path: root/xfce-base/exo/files
diff options
context:
space:
mode:
Diffstat (limited to 'xfce-base/exo/files')
-rw-r--r--xfce-base/exo/files/exo-0.10.2-exo_str_looks_like_an_uri.patch52
1 files changed, 52 insertions, 0 deletions
diff --git a/xfce-base/exo/files/exo-0.10.2-exo_str_looks_like_an_uri.patch b/xfce-base/exo/files/exo-0.10.2-exo_str_looks_like_an_uri.patch
new file mode 100644
index 00000000..9c813745
--- /dev/null
+++ b/xfce-base/exo/files/exo-0.10.2-exo_str_looks_like_an_uri.patch
@@ -0,0 +1,52 @@
+http://bugs.gentoo.org/466144
+
+From 05848bb3cb10ea19ef8cba607bdabcd25560063c Mon Sep 17 00:00:00 2001
+From: Felipe Contreras <felipe.contreras@gmail.com>
+Date: Sat, 18 May 2013 22:50:01 -0500
+Subject: Fix exo_str_looks_like_an_uri() (bug #10098).
+
+Commit d11199b (Check if uris also contain a slash (bug #9244)) tried to
+fix a hang in thunar by properly recognizing that 'http:' is not an URI,
+however, while doing so, it broke proper URIs like 'magnet:foo'.
+
+As the RFC clearly states:
+
+ The following are two example URIs and their component parts:
+
+ foo://example.com:8042/over/there?name=ferret#nose
+ \_/ \______________/\_________/ \_________/ \__/
+ | | | | |
+ scheme authority path query fragment
+ | _____________________|__
+ / \ / \
+ urn:example:animal:ferret:nose
+
+But even with this succinct example exo_str_looks_like_an_uri() fails.
+
+There is an easy solution; fail only when component part is missing
+('urn:'), but succeed otherwise.
+
+This solution fixes 'magnet:foo', and doesn't break the current
+expectation from thunar that 'http:' should fail, having the best of
+both worlds.
+
+[1] http://www.ietf.org/rfc/rfc3986.txt
+
+Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
+
+diff --git a/exo/exo-string.c b/exo/exo-string.c
+index 33f86f9..056b36a 100644
+--- a/exo/exo-string.c
++++ b/exo/exo-string.c
+@@ -429,7 +429,7 @@ exo_str_looks_like_an_uri (const gchar *str)
+ for (++s; g_ascii_isalnum (*s) || *s == '+' || *s == '-' || *s == '.'; ++s);
+
+ /* <scheme> must be followed by ":" */
+- return (*s == ':' && *(s+1) == '/');
++ return (*s == ':' && *(s+1) != '\0');
+ }
+
+ return FALSE;
+--
+cgit v0.10.1
+