Skip to content

Commit 584a49f

Browse files
committed
Handle invalid regexps more gracefully
1 parent 8736c17 commit 584a49f

File tree

1 file changed

+6
-10
lines changed

1 file changed

+6
-10
lines changed

src/yarp.c

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12486,17 +12486,13 @@ parse_expression_infix(yp_parser_t *parser, yp_node_t *node, yp_binding_power_t
1248612486

1248712487
yp_location_t *content_loc = &((yp_regular_expression_node_t *) node)->content_loc;
1248812488

12489-
YP_ATTRIBUTE_UNUSED bool captured_group_names =
12490-
yp_regexp_named_capture_group_names(content_loc->start, (size_t) (content_loc->end - content_loc->start), &named_captures);
12489+
if (yp_regexp_named_capture_group_names(content_loc->start, (size_t) (content_loc->end - content_loc->start), &named_captures)) {
12490+
for (size_t index = 0; index < named_captures.length; index++) {
12491+
yp_string_t *name = &named_captures.strings[index];
12492+
assert(name->type == YP_STRING_SHARED);
1249112493

12492-
// We assert that the regex was successfully parsed
12493-
assert(captured_group_names);
12494-
12495-
for (size_t index = 0; index < named_captures.length; index++) {
12496-
yp_string_t *name = &named_captures.strings[index];
12497-
assert(name->type == YP_STRING_SHARED);
12498-
12499-
yp_parser_local_add_location(parser, name->as.shared.start, name->as.shared.end);
12494+
yp_parser_local_add_location(parser, name->as.shared.start, name->as.shared.end);
12495+
}
1250012496
}
1250112497

1250212498
yp_string_list_free(&named_captures);

0 commit comments

Comments
 (0)