diff options
author | John MacFarlane <jgm@berkeley.edu> | 2014-11-22 20:10:47 -0800 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2014-11-22 20:11:26 -0800 |
commit | b142a396090798ed06e89475dcf6fd77362e312f (patch) | |
tree | b91030c45c4dce88f427c87882fb265c39273e16 /src/inlines.c | |
parent | 694a826bf0caef60330e3f4fcd195611a70ec77e (diff) |
Fixed #214 C and JS implementations.
They were gobbling whitespace after shortcut reference links,
e.g.
[foo] bar
[foo]: url
Closes #214.
Diffstat (limited to 'src/inlines.c')
-rw-r--r-- | src/inlines.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/inlines.c b/src/inlines.c index 37ad768..9bc4e35 100644 --- a/src/inlines.c +++ b/src/inlines.c @@ -658,6 +658,7 @@ static cmark_node* handle_close_bracket(subject* subj, cmark_node *parent) cmark_node *link_text; cmark_node *inl; chunk raw_label; + int found_label; advance(subj); // advance past ] initial_pos = subj->pos; @@ -717,12 +718,19 @@ static cmark_node* handle_close_bracket(subject* subj, cmark_node *parent) // skip spaces subj->pos = subj->pos + scan_spacechars(&subj->input, subj->pos); raw_label = chunk_literal(""); - if (!link_label(subj, &raw_label) || raw_label.len == 0) { + found_label = link_label(subj, &raw_label); + if (!found_label || raw_label.len == 0) { chunk_free(&raw_label); raw_label = chunk_dup(&subj->input, opener->position, initial_pos - opener->position - 1); } + if (!found_label) { + // If we have a shortcut reference link, back up + // to before the spacse we skipped. + subj->pos = initial_pos; + } + ref = reference_lookup(subj->refmap, &raw_label); chunk_free(&raw_label); |