summaryrefslogtreecommitdiff
path: root/toke.c
diff options
context:
space:
mode:
authorKarl Williamson <khw@cpan.org>2022-03-29 04:17:04 -0600
committerKarl Williamson <khw@cpan.org>2022-04-01 09:19:54 -0600
commit17ebbec55ab7a8b194b79416e6123159e46ad83d (patch)
treeae5d471a797934a78c9c0edf64cda10f33c88422 /toke.c
parentbf52d61874b152a9f8b8e342d9f05eb394833836 (diff)
downloadperl-17ebbec55ab7a8b194b79416e6123159e46ad83d.tar.gz
toke.c: Rmv redundant storage
The data contained in this variable is a copy of const data stored elsewhere. Instead of making a copy, simplify to just point to the already-stored data
Diffstat (limited to 'toke.c')
-rw-r--r--toke.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/toke.c b/toke.c
index 16dfbf14ff..1c715738de 100644
--- a/toke.c
+++ b/toke.c
@@ -11325,7 +11325,6 @@ Perl_scan_str(pTHX_ char *start, int keep_bracketed_quoted, int keep_delims, int
UV open_delim_code; /* code point */
UV close_delim_code; /* code point */
char open_delim_str[UTF8_MAXBYTES+1];
- char close_delim_str[UTF8_MAXBYTES+1];
STRLEN delim_byte_len; /* each delimiter currently is the same number
of bytes */
line_t herelines;
@@ -11348,11 +11347,9 @@ Perl_scan_str(pTHX_ char *start, int keep_bracketed_quoted, int keep_delims, int
/* after skipping whitespace, the next character is the delimiter */
if (! UTF || UTF8_IS_INVARIANT(*s)) {
- close_delim_str[0] = *s;
- open_delim_str[0] = close_delim_str[0];
-
- close_delim_code = (U8) close_delim_str[0];
+ close_delim_code = (U8) *s;
open_delim_code = close_delim_code;
+ open_delim_str[0] = *s;
delim_byte_len = 1;
}
else {
@@ -11368,8 +11365,6 @@ Perl_scan_str(pTHX_ char *start, int keep_bracketed_quoted, int keep_delims, int
Copy(s, open_delim_str, delim_byte_len, char);
open_delim_str[delim_byte_len] = '\0';
- Copy(s, close_delim_str, delim_byte_len, char);
- close_delim_str[delim_byte_len] = '\0';
}
/* mark where we are */
@@ -11425,11 +11420,13 @@ Perl_scan_str(pTHX_ char *start, int keep_bracketed_quoted, int keep_delims, int
}
}
+ const char * close_delim_str = open_delim_str;
+
/* If the delimiter has a mirror-image closing one, get it */
if (close_delim_code == '\0') { /* We, *shudder*, accept NUL as a
delimiter, but it makes empty string
processing just fall out */
- close_delim_code = close_delim_str[0] = '\0';
+ close_delim_code = '\0';
}
else if ((tmps = ninstr(legal_paired_opening_delims,
legal_paired_opening_delims_end,
@@ -11439,10 +11436,8 @@ Perl_scan_str(pTHX_ char *start, int keep_bracketed_quoted, int keep_delims, int
corresponding position in the string of closing ones is the
beginning of the paired mate. Both contain the same number of
bytes. */
- Copy(legal_paired_closing_delims
- + (tmps - legal_paired_opening_delims),
- close_delim_str, delim_byte_len, char);
- close_delim_str[delim_byte_len] = '\0';
+ close_delim_str = legal_paired_closing_delims
+ + (tmps - legal_paired_opening_delims);
close_delim_code = valid_utf8_to_uvchr((U8 *) close_delim_str, NULL);
/* The list of paired delimiters contains all the ASCII ones that have