@@ -722,22 +722,24 @@ static void process_emphasis(cmark_parser *parser, subject *subj, bufsize_t stac
722
722
} else {
723
723
closer = closer -> next ;
724
724
}
725
- } else if (closer -> delim_char == '\'' ) {
725
+ } else if (closer -> delim_char == '\'' || closer -> delim_char == '"' ) {
726
726
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 );
731
731
}
732
732
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 );
736
733
if (opener_found ) {
737
734
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 );
739
742
}
740
- closer = closer -> next ;
741
743
}
742
744
if (!opener_found ) {
743
745
// set lower bound for future searches for openers
0 commit comments