Skip to content

Commit fae4863

Browse files
committed
Merge remote-tracking branch 'origin/fix-process-emphasis'
2 parents 16c1951 + 9deb1c6 commit fae4863

File tree

2 files changed

+13
-11
lines changed

2 files changed

+13
-11
lines changed

extensions/strikethrough.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ static delimiter *insert(cmark_syntax_extension *self, cmark_parser *parser,
6767
strikethrough->end_column = closer->inl_text->start_column + closer->inl_text->as.literal.len - 1;
6868
cmark_node_free(closer->inl_text);
6969

70+
done:
7071
delim = closer;
7172
while (delim != NULL && delim != opener) {
7273
tmp_delim = delim->previous;
@@ -76,7 +77,6 @@ static delimiter *insert(cmark_syntax_extension *self, cmark_parser *parser,
7677

7778
cmark_inline_parser_remove_delimiter(inline_parser, opener);
7879

79-
done:
8080
return res;
8181
}
8282

src/inlines.c

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -722,22 +722,24 @@ static void process_emphasis(cmark_parser *parser, subject *subj, bufsize_t stac
722722
} else {
723723
closer = closer->next;
724724
}
725-
} else if (closer->delim_char == '\'') {
725+
} else if (closer->delim_char == '\'' || closer->delim_char == '"') {
726726
cmark_chunk_free(subj->mem, &closer->inl_text->as.literal);
727-
closer->inl_text->as.literal = cmark_chunk_literal(RIGHTSINGLEQUOTE);
728-
if (opener_found) {
729-
cmark_chunk_free(subj->mem, &opener->inl_text->as.literal);
730-
opener->inl_text->as.literal = cmark_chunk_literal(LEFTSINGLEQUOTE);
727+
if (closer->delim_char == '\'') {
728+
closer->inl_text->as.literal = cmark_chunk_literal(RIGHTSINGLEQUOTE);
729+
} else {
730+
closer->inl_text->as.literal = cmark_chunk_literal(RIGHTDOUBLEQUOTE);
731731
}
732732
closer = closer->next;
733-
} else if (closer->delim_char == '"') {
734-
cmark_chunk_free(subj->mem, &closer->inl_text->as.literal);
735-
closer->inl_text->as.literal = cmark_chunk_literal(RIGHTDOUBLEQUOTE);
736733
if (opener_found) {
737734
cmark_chunk_free(subj->mem, &opener->inl_text->as.literal);
738-
opener->inl_text->as.literal = cmark_chunk_literal(LEFTDOUBLEQUOTE);
735+
if (old_closer->delim_char == '\'') {
736+
opener->inl_text->as.literal = cmark_chunk_literal(LEFTSINGLEQUOTE);
737+
} else {
738+
opener->inl_text->as.literal = cmark_chunk_literal(LEFTDOUBLEQUOTE);
739+
}
740+
remove_delimiter(subj, opener);
741+
remove_delimiter(subj, old_closer);
739742
}
740-
closer = closer->next;
741743
}
742744
if (!opener_found) {
743745
// set lower bound for future searches for openers

0 commit comments

Comments
 (0)