diff options
author | Karl Williamson <khw@cpan.org> | 2022-03-28 21:31:55 -0600 |
---|---|---|
committer | Karl Williamson <khw@cpan.org> | 2022-04-01 09:19:55 -0600 |
commit | 200625618e5c6becdf49f6c7d887eff5abc91054 (patch) | |
tree | 36f689f195d7eed39dd3b385874d9e2be0a04547 /toke.c | |
parent | 1061cdbabb82e32485a24378c01f81d4cd9c3ea0 (diff) | |
download | perl-200625618e5c6becdf49f6c7d887eff5abc91054.tar.gz |
toke.c: C_ARRAY_END() doesn't work on a string
The code was using the macro C_ARRAY_END which doesn't apply to strings,
thus not giving the correct end to the string. But no tests were
failing. No new tests are added here, because the next commit will
change things so that tests would fail all over the place.
Diffstat (limited to 'toke.c')
-rw-r--r-- | toke.c | 33 |
1 files changed, 9 insertions, 24 deletions
@@ -11372,15 +11372,11 @@ Perl_scan_str(pTHX_ char *start, int keep_bracketed_quoted, int keep_delims, int herelines = PL_parser->herelines; const char * legal_paired_opening_delims; - const char * legal_paired_opening_delims_end; const char * legal_paired_closing_delims; - const char * deprecated_opening_delims = ""; - const char * deprecated_delims_end = deprecated_opening_delims; + const char * deprecated_opening_delims; if (FEATURE_MORE_DELIMS_IS_ENABLED) { if (UTF) { legal_paired_opening_delims = EXTRA_OPENING_UTF8_BRACKETS; - legal_paired_opening_delims_end = - C_ARRAY_END(EXTRA_OPENING_UTF8_BRACKETS); legal_paired_closing_delims = EXTRA_CLOSING_UTF8_BRACKETS; /* We are deprecating using a closing delimiter as the opening, in @@ -11388,37 +11384,26 @@ Perl_scan_str(pTHX_ char *start, int keep_bracketed_quoted, int keep_delims, int * may include ones that are legal, but the code below won't look * at this string unless it didn't find a legal opening one */ deprecated_opening_delims = DEPRECATED_OPENING_UTF8_BRACKETS; - deprecated_delims_end = - C_ARRAY_END(DEPRECATED_OPENING_UTF8_BRACKETS); } else { legal_paired_opening_delims = EXTRA_OPENING_NON_UTF8_BRACKETS; - legal_paired_opening_delims_end = - C_ARRAY_END(EXTRA_OPENING_NON_UTF8_BRACKETS); legal_paired_closing_delims = EXTRA_CLOSING_NON_UTF8_BRACKETS; - deprecated_opening_delims = DEPRECATED_OPENING_NON_UTF8_BRACKETS; - deprecated_delims_end = - C_ARRAY_END(DEPRECATED_OPENING_NON_UTF8_BRACKETS); } } else { legal_paired_opening_delims = "([{<"; legal_paired_closing_delims = ")]}>"; - legal_paired_opening_delims_end = legal_paired_opening_delims + 4; - - if (UTF) { - deprecated_opening_delims = DEPRECATED_OPENING_UTF8_BRACKETS; - deprecated_delims_end = - C_ARRAY_END(DEPRECATED_OPENING_UTF8_BRACKETS); - } - else { - deprecated_opening_delims = DEPRECATED_OPENING_NON_UTF8_BRACKETS; - deprecated_delims_end = - C_ARRAY_END(DEPRECATED_OPENING_NON_UTF8_BRACKETS); - } + deprecated_opening_delims = (UTF) + ? DEPRECATED_OPENING_UTF8_BRACKETS + : DEPRECATED_OPENING_NON_UTF8_BRACKETS; } + const char * legal_paired_opening_delims_end = legal_paired_opening_delims + + strlen(legal_paired_opening_delims); + const char * deprecated_delims_end = deprecated_opening_delims + + strlen(deprecated_opening_delims); + const char * close_delim_str = open_delim_str; UV close_delim_code = open_delim_code; |