@@ -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