Skip to content

Commit

Permalink
Better fix for cmark #383 regression.
Browse files Browse the repository at this point in the history
This parallels the new approach in cmark.
  • Loading branch information
jgm committed Jun 19, 2021
1 parent 79d7756 commit e708628
Showing 1 changed file with 21 additions and 8 deletions.
29 changes: 21 additions & 8 deletions lib/inlines.js
Original file line number Diff line number Diff line change
Expand Up @@ -375,14 +375,12 @@ var processEmphasis = function(stack_bottom) {
var use_delims;
var tmp, next;
var opener_found;
var openers_bottom = [[], [], []];
var openers_bottom = [];
var openers_bottom_index;
var odd_match = false;

for (var i = 0; i < 3; i++) {
openers_bottom[i][C_UNDERSCORE] = stack_bottom;
openers_bottom[i][C_ASTERISK] = stack_bottom;
openers_bottom[i][C_SINGLEQUOTE] = stack_bottom;
openers_bottom[i][C_DOUBLEQUOTE] = stack_bottom;
for (var i = 0; i < 8; i++) {
openers_bottom[i] = stack_bottom;
}
// find first closer above stack_bottom:
closer = this.delimiters;
Expand All @@ -398,10 +396,25 @@ var processEmphasis = function(stack_bottom) {
// found emphasis closer. now look back for first matching opener:
opener = closer.previous;
opener_found = false;
switch (closercc) {
case C_SINGLEQUOTE:
openers_bottom_index = 0;
break;
case C_DOUBLEQUOTE:
openers_bottom_index = 1;
break;
case C_UNDERSCORE:
openers_bottom_index = 2;
break;
case C_ASTERISK:
openers_bottom_index = 3 + (closer.can_open ? 3 : 0)
+ (closer.origdelims % 3);
break;
}
while (
opener !== null &&
opener !== stack_bottom &&
opener !== openers_bottom[closer.origdelims % 3][closercc]
opener !== openers_bottom[openers_bottom_index]
) {
odd_match =
(closer.can_open || opener.can_close) &&
Expand Down Expand Up @@ -482,7 +495,7 @@ var processEmphasis = function(stack_bottom) {
}
if (!opener_found) {
// Set lower bound for future searches for openers:
openers_bottom[old_closer.origdelims % 3][closercc] =
openers_bottom[openers_bottom_index] =
old_closer.previous;
if (!old_closer.can_open) {
// We can remove a closer that can't be an opener,
Expand Down

0 comments on commit e708628

Please sign in to comment.