@@ -8594,6 +8594,7 @@ escape_write_escape_encoded(pm_parser_t *parser, pm_buffer_t *buffer, pm_buffer_
85948594 }
85958595
85968596 if (width == 1) {
8597+ if (*parser->current.end == '\n') pm_line_offset_list_append(&parser->line_offsets, PM_TOKEN_END(parser, &parser->current) + 1);
85978598 escape_write_byte(parser, buffer, regular_expression_buffer, flags, escape_byte(*parser->current.end++, flags));
85988599 } else if (width > 1) {
85998600 // Valid multibyte character. Just ignore escape.
@@ -8910,6 +8911,7 @@ escape_read(pm_parser_t *parser, pm_buffer_t *buffer, pm_buffer_t *regular_expre
89108911 return;
89118912 }
89128913
8914+ if (peeked == '\n') pm_line_offset_list_append(&parser->line_offsets, PM_TOKEN_END(parser, &parser->current) + 1);
89138915 parser->current.end++;
89148916 escape_write_byte(parser, buffer, regular_expression_buffer, flags, escape_byte(peeked, flags | PM_ESCAPE_FLAG_CONTROL));
89158917 return;
@@ -8968,6 +8970,7 @@ escape_read(pm_parser_t *parser, pm_buffer_t *buffer, pm_buffer_t *regular_expre
89688970 return;
89698971 }
89708972
8973+ if (peeked == '\n') pm_line_offset_list_append(&parser->line_offsets, PM_TOKEN_END(parser, &parser->current) + 1);
89718974 parser->current.end++;
89728975 escape_write_byte(parser, buffer, regular_expression_buffer, flags, escape_byte(peeked, flags | PM_ESCAPE_FLAG_CONTROL));
89738976 return;
@@ -9021,13 +9024,15 @@ escape_read(pm_parser_t *parser, pm_buffer_t *buffer, pm_buffer_t *regular_expre
90219024 return;
90229025 }
90239026
9027+ if (peeked == '\n') pm_line_offset_list_append(&parser->line_offsets, PM_TOKEN_END(parser, &parser->current) + 1);
90249028 parser->current.end++;
90259029 escape_write_byte(parser, buffer, regular_expression_buffer, flags, escape_byte(peeked, flags | PM_ESCAPE_FLAG_META));
90269030 return;
90279031 }
90289032 }
90299033 case '\r': {
90309034 if (peek_offset(parser, 1) == '\n') {
9035+ pm_line_offset_list_append(&parser->line_offsets, PM_TOKEN_END(parser, &parser->current) + 2);
90319036 parser->current.end += 2;
90329037 escape_write_byte_encoded(parser, buffer, flags, escape_byte('\n', flags));
90339038 return;
0 commit comments