From 2db365dc83b3bc5e5bc15d93b5cd44b048188361 Mon Sep 17 00:00:00 2001 From: Kevin Newton Date: Mon, 17 Feb 2025 12:57:54 -0500 Subject: [ruby/prism] Fix escape unicode curly inline whitespace Fixes [Bug #21145] https://github.com/ruby/prism/commit/be2d845639 --- prism/prism.c | 4 ++-- test/prism/errors/escape_unicode_curly_whitespace.txt | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 test/prism/errors/escape_unicode_curly_whitespace.txt diff --git a/prism/prism.c b/prism/prism.c index 7f0c696749..f5d784d424 100644 --- a/prism/prism.c +++ b/prism/prism.c @@ -9776,7 +9776,7 @@ escape_read(pm_parser_t *parser, pm_buffer_t *buffer, pm_buffer_t *regular_expre size_t whitespace; while (true) { - if ((whitespace = pm_strspn_whitespace(parser->current.end, parser->end - parser->current.end)) > 0) { + if ((whitespace = pm_strspn_inline_whitespace(parser->current.end, parser->end - parser->current.end)) > 0) { parser->current.end += whitespace; } else if (peek(parser) == '\\' && peek_offset(parser, 1) == 'n') { // This is super hacky, but it gets us nicer error @@ -9824,7 +9824,7 @@ escape_read(pm_parser_t *parser, pm_buffer_t *buffer, pm_buffer_t *regular_expre uint32_t value = escape_unicode(parser, unicode_start, hexadecimal_length); escape_write_unicode(parser, buffer, flags, unicode_start, parser->current.end, value); - parser->current.end += pm_strspn_whitespace(parser->current.end, parser->end - parser->current.end); + parser->current.end += pm_strspn_inline_whitespace(parser->current.end, parser->end - parser->current.end); } // ?\u{nnnn} character literal should contain only one codepoint diff --git a/test/prism/errors/escape_unicode_curly_whitespace.txt b/test/prism/errors/escape_unicode_curly_whitespace.txt new file mode 100644 index 0000000000..324d8a2ae5 --- /dev/null +++ b/test/prism/errors/escape_unicode_curly_whitespace.txt @@ -0,0 +1,5 @@ +"\u{ + ^ invalid Unicode escape sequence + ^ unterminated Unicode escape +61}" + -- cgit v1.2.3