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, """); 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);