diff options
Diffstat (limited to 'xfce-base/exo/files')
-rw-r--r-- | xfce-base/exo/files/exo-0.10.2-exo_str_looks_like_an_uri.patch | 52 |
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 + |