Skip to content

Commit 2006256

Browse files
committed
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.
1 parent 1061cdb commit 2006256

File tree

1 file changed

+9
-24
lines changed

1 file changed

+9
-24
lines changed

toke.c

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11372,53 +11372,38 @@ Perl_scan_str(pTHX_ char *start, int keep_bracketed_quoted, int keep_delims, int
1137211372
herelines = PL_parser->herelines;
1137311373

1137411374
const char * legal_paired_opening_delims;
11375-
const char * legal_paired_opening_delims_end;
1137611375
const char * legal_paired_closing_delims;
11377-
const char * deprecated_opening_delims = "";
11378-
const char * deprecated_delims_end = deprecated_opening_delims;
11376+
const char * deprecated_opening_delims;
1137911377
if (FEATURE_MORE_DELIMS_IS_ENABLED) {
1138011378
if (UTF) {
1138111379
legal_paired_opening_delims = EXTRA_OPENING_UTF8_BRACKETS;
11382-
legal_paired_opening_delims_end =
11383-
C_ARRAY_END(EXTRA_OPENING_UTF8_BRACKETS);
1138411380
legal_paired_closing_delims = EXTRA_CLOSING_UTF8_BRACKETS;
1138511381

1138611382
/* We are deprecating using a closing delimiter as the opening, in
1138711383
* case we want in the future to accept them reversed. The string
1138811384
* may include ones that are legal, but the code below won't look
1138911385
* at this string unless it didn't find a legal opening one */
1139011386
deprecated_opening_delims = DEPRECATED_OPENING_UTF8_BRACKETS;
11391-
deprecated_delims_end =
11392-
C_ARRAY_END(DEPRECATED_OPENING_UTF8_BRACKETS);
1139311387
}
1139411388
else {
1139511389
legal_paired_opening_delims = EXTRA_OPENING_NON_UTF8_BRACKETS;
11396-
legal_paired_opening_delims_end =
11397-
C_ARRAY_END(EXTRA_OPENING_NON_UTF8_BRACKETS);
1139811390
legal_paired_closing_delims = EXTRA_CLOSING_NON_UTF8_BRACKETS;
11399-
1140011391
deprecated_opening_delims = DEPRECATED_OPENING_NON_UTF8_BRACKETS;
11401-
deprecated_delims_end =
11402-
C_ARRAY_END(DEPRECATED_OPENING_NON_UTF8_BRACKETS);
1140311392
}
1140411393
}
1140511394
else {
1140611395
legal_paired_opening_delims = "([{<";
1140711396
legal_paired_closing_delims = ")]}>";
11408-
legal_paired_opening_delims_end = legal_paired_opening_delims + 4;
11409-
11410-
if (UTF) {
11411-
deprecated_opening_delims = DEPRECATED_OPENING_UTF8_BRACKETS;
11412-
deprecated_delims_end =
11413-
C_ARRAY_END(DEPRECATED_OPENING_UTF8_BRACKETS);
11414-
}
11415-
else {
11416-
deprecated_opening_delims = DEPRECATED_OPENING_NON_UTF8_BRACKETS;
11417-
deprecated_delims_end =
11418-
C_ARRAY_END(DEPRECATED_OPENING_NON_UTF8_BRACKETS);
11419-
}
11397+
deprecated_opening_delims = (UTF)
11398+
? DEPRECATED_OPENING_UTF8_BRACKETS
11399+
: DEPRECATED_OPENING_NON_UTF8_BRACKETS;
1142011400
}
1142111401

11402+
const char * legal_paired_opening_delims_end = legal_paired_opening_delims
11403+
+ strlen(legal_paired_opening_delims);
11404+
const char * deprecated_delims_end = deprecated_opening_delims
11405+
+ strlen(deprecated_opening_delims);
11406+
1142211407
const char * close_delim_str = open_delim_str;
1142311408
UV close_delim_code = open_delim_code;
1142411409

0 commit comments

Comments
 (0)