summaryrefslogtreecommitdiff
path: root/toke.c
diff options
context:
space:
mode:
authorKarl Williamson <khw@cpan.org>2022-03-28 21:31:55 -0600
committerKarl Williamson <khw@cpan.org>2022-04-01 09:19:55 -0600
commit200625618e5c6becdf49f6c7d887eff5abc91054 (patch)
tree36f689f195d7eed39dd3b385874d9e2be0a04547 /toke.c
parent1061cdbabb82e32485a24378c01f81d4cd9c3ea0 (diff)
downloadperl-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.c33
1 files changed, 9 insertions, 24 deletions
diff --git a/toke.c b/toke.c
index e60f94b52f..91b0bb65dc 100644
--- a/toke.c
+++ b/toke.c
@@ -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;