ext/xhtml.c in redcarpet-1.11.3 vs ext/xhtml.c in redcarpet-1.11.4

- old
+ new

@@ -47,42 +47,10 @@ case '"': BUFPUTSL(ob, "&quot;"); break; default: bufputc(ob, c); break; } } -static void -uri_escape(struct buf *ob, const char *src, size_t size) -{ - size_t i; - - for (i = 0; i < size; ++i) { - char c = src[i]; - - if (c == '%' && i + 2 < size && isxdigit(src[i + 1]) && isxdigit(src[i + 2])) { - bufput(ob, src + i, 3); - i += 2; - continue; - } - - switch (c) { - case ';': case '/': - case '?': case ':': - case '@': case '=': - case '#': case '&': - case '.': case '+': - case '-': - bufputc(ob, c); - continue; - } - - if (!isalnum(c)) - bufprintf(ob, "%%%02x", (int)c); - else - bufputc(ob, c); - } -} - /* attr_escape • copy the buffer entity-escaping '<', '>', '&' and '"' */ static void attr_escape(struct buf *ob, const char *src, size_t size) { size_t i = 0, org; @@ -152,11 +120,11 @@ return 0; BUFPUTSL(ob, "<a href=\""); if (type == MKDA_EMAIL) BUFPUTSL(ob, "mailto:"); - uri_escape(ob, link->data, link->size); + bufput(ob, link->data, link->size); BUFPUTSL(ob, "\">"); /* * Pretty printing: if we get an email address as * an actual URI, e.g. `mailto:foo@bar.com`, we don't @@ -321,10 +289,10 @@ if ((options->flags & XHTML_SAFELINK) != 0 && !is_safe_link(link->data, link->size)) return 0; BUFPUTSL(ob, "<a href=\""); - if (link && link->size) uri_escape(ob, link->data, link->size); + if (link && link->size) bufput(ob, link->data, link->size); if (title && title->size) { BUFPUTSL(ob, "\" title=\""); attr_escape(ob, title->data, title->size); } BUFPUTSL(ob, "\">"); if (content && content->size) bufput(ob, content->data, content->size);