diff --git a/lib/marked.js b/lib/marked.js
index 15f61cb3..b2167389 100644
--- a/lib/marked.js
+++ b/lib/marked.js
@@ -128,10 +128,15 @@ block.token = function lex(str, tokens, line) {
var keys = block.keys
, len = keys.length;
+ var i
+ , key
+ , rule
+ , cap;
+
while (str.length)
- for (var i = 0; i < len; i++) {
- var key = keys[i]
- , rule = block[key];
+ for (i = 0; i < len; i++) {
+ key = keys[i];
+ rule = block[key];
cap = rule.exec(str);
if (!cap) continue;
@@ -278,12 +283,17 @@ inline.lexer = function(str) {
var rules = inline
, keys = inline.keys
, len = keys.length
- , i
- , key
- , rule
, out = ''
, links = tokens.links;
+ var i
+ , key
+ , rule
+ , cap
+ , link
+ , text
+ , href;
+
while (str.length) {
for (i = 0; i < len; i++) {
key = keys[i];
@@ -311,7 +321,7 @@ inline.lexer = function(str) {
break;
case 'link':
case 'reflink':
- var link = links[cap[2]] || '';
+ link = links[cap[2]] || '';
out += ''
- + email
- + '';
+ text = mangle(cap[1]);
+ href = mangle('mailto:') + text;
} else {
- var href = escape(cap[1]);
- out += ''
- + href
- + '';
+ text = escape(cap[1]);
+ href = text;
}
+ out += ''
+ + text
+ + '';
break;
case 'strong':
out += ''