@@ -6,16 +6,20 @@ typedef struct {
6
6
const char * cursor ;
7
7
const char * end ;
8
8
yp_string_list_t * named_captures ;
9
+ bool encoding_changed ;
10
+ yp_encoding_t * encoding ;
9
11
} yp_regexp_parser_t ;
10
12
11
13
// This initializes a new parser with the given source.
12
14
static void
13
- yp_regexp_parser_init (yp_regexp_parser_t * parser , const char * start , const char * end , yp_string_list_t * named_captures ) {
15
+ yp_regexp_parser_init (yp_regexp_parser_t * parser , const char * start , const char * end , yp_string_list_t * named_captures , bool encoding_changed , yp_encoding_t * encoding ) {
14
16
* parser = (yp_regexp_parser_t ) {
15
17
.start = start ,
16
18
.cursor = start ,
17
19
.end = end ,
18
- .named_captures = named_captures
20
+ .named_captures = named_captures ,
21
+ .encoding_changed = encoding_changed ,
22
+ .encoding = encoding
19
23
};
20
24
}
21
25
@@ -60,7 +64,8 @@ yp_regexp_char_find(yp_regexp_parser_t *parser, char value) {
60
64
if (yp_regexp_char_is_eof (parser )) {
61
65
return false;
62
66
}
63
- const char * end = (const char * ) memchr (parser -> cursor , value , (size_t ) (parser -> end - parser -> cursor ));
67
+
68
+ const char * end = (const char * ) yp_memchr (parser -> cursor , value , (size_t ) (parser -> end - parser -> cursor ), parser -> encoding_changed , parser -> encoding );
64
69
if (end == NULL ) {
65
70
return false;
66
71
}
@@ -542,8 +547,8 @@ yp_regexp_parse_pattern(yp_regexp_parser_t *parser) {
542
547
// Parse a regular expression and extract the names of all of the named capture
543
548
// groups.
544
549
YP_EXPORTED_FUNCTION bool
545
- yp_regexp_named_capture_group_names (const char * source , size_t size , yp_string_list_t * named_captures ) {
550
+ yp_regexp_named_capture_group_names (const char * source , size_t size , yp_string_list_t * named_captures , bool encoding_changed , yp_encoding_t * encoding ) {
546
551
yp_regexp_parser_t parser ;
547
- yp_regexp_parser_init (& parser , source , source + size , named_captures );
552
+ yp_regexp_parser_init (& parser , source , source + size , named_captures , encoding_changed , encoding );
548
553
return yp_regexp_parse_pattern (& parser );
549
554
}
0 commit comments