From 05848bb3cb10ea19ef8cba607bdabcd25560063c Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Sat, 18 May 2013 22:50:01 -0500 Subject: [PATCH] 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 --- exo/exo-string.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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); /* must be followed by ":" */ - return (*s == ':' && *(s+1) == '/'); + return (*s == ':' && *(s+1) != '\0'); } return FALSE; -- 1.8.4.2