]> git.wincent.com - wikitext.git/commitdiff
Fix CSS class of explicit mailto: URIs 1.10.1
authorWincent Colaiuta <win@wincent.com>
Sun, 21 Mar 2010 19:01:55 +0000 (20:01 +0100)
committerWincent Colaiuta <win@wincent.com>
Sun, 21 Mar 2010 19:04:28 +0000 (20:04 +0100)
Previously we only correctly handled "mailto" links when the link target
itself included the "mailto:" prefix.

In other cases, where the prefix was passed in separately, for example,
we did not apply the special CSS class.

Now we always check both the link target and the prefix to see if either
of them begins with "mailto:".

Fixes the spec failures reported in:

  https://wincent.com/issues/1389

Signed-off-by: Wincent Colaiuta <win@wincent.com>
ext/parser.c

index 29f12cc397ee4c4e1f9b5a18b000b1a96bfc5bae..af18d69b1518280393acaaac79e63c08bd52928a 100644 (file)
@@ -287,9 +287,12 @@ void wiki_append_hyperlink(parser_t *parser, VALUE link_prefix, str_t *link_targ
 
         // special handling for mailto URIs
         const char *mailto = "mailto:";
-        if (NIL_P(link_prefix) &&
-            link_target->len >= (long)sizeof(mailto) &&
-            strncmp(mailto, link_target->ptr, sizeof(mailto)) == 0)
+        long mailto_len = (long)sizeof(mailto) - 1; // don't count NUL byte
+        if ((link_target->len >= mailto_len &&
+             strncmp(mailto, link_target->ptr, mailto_len) == 0) ||
+            (!NIL_P(link_prefix) &&
+             RSTRING_LEN(link_prefix) >= mailto_len &&
+             strncmp(mailto, RSTRING_PTR(link_prefix), mailto_len) == 0))
             link_class = parser->mailto_class; // use mailto_class from parser
         if (link_class != Qnil)
         {