Skip to content

Commit f226bc2

Browse files
committed
[Bug #20986] [Prism] Allow escaped multibyte character
1 parent 4d8c9c1 commit f226bc2

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

prism/prism.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9618,10 +9618,15 @@ escape_write_escape_encoded(pm_parser_t *parser, pm_buffer_t *buffer, pm_buffer_
96189618

96199619
if (width == 1) {
96209620
escape_write_byte(parser, buffer, regular_expression_buffer, flags, escape_byte(*parser->current.end++, flags));
9621+
} else if (width > 1) {
9622+
// Valid multibyte character. Just ignore escape.
9623+
pm_buffer_t *b = (flags & PM_ESCAPE_FLAG_REGEXP) ? regular_expression_buffer : buffer;
9624+
pm_buffer_append_bytes(b, parser->current.end, width);
9625+
parser->current.end += width;
96219626
} else {
96229627
// Assume the next character wasn't meant to be part of this escape
96239628
// sequence since it is invalid. Add an error and move on.
9624-
parser->current.end += width;
9629+
parser->current.end++;
96259630
pm_parser_err_current(parser, PM_ERR_ESCAPE_INVALID_CONTROL);
96269631
}
96279632
}

0 commit comments

Comments
 (0)