summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2016-07-26 00:47:16 -0700
committerFather Chrysostomos <sprout@cpan.org>2016-07-26 01:52:25 -0700
commit6745174b5616843ee57f0b733bd056bfab42f30f (patch)
tree9240338ebaecd74be1f5f716565c08c586b82898
parentef269bf5f55cf5087c6190ddbf34459c60a69622 (diff)
downloadperl-6745174b5616843ee57f0b733bd056bfab42f30f.tar.gz
parser.h: Use UV for string delims
We will need to store characters > 255 in here. Also, cast accordingly in toke.c.
-rw-r--r--parser.h4
-rw-r--r--toke.c7
2 files changed, 6 insertions, 5 deletions
diff --git a/parser.h b/parser.h
index 96ab4f5ff5..35f172ea4e 100644
--- a/parser.h
+++ b/parser.h
@@ -68,8 +68,8 @@ typedef struct yy_parser {
SV *lex_stuff; /* runtime pattern from m// or s/// */
I32 multi_start; /* 1st line of multi-line string */
I32 multi_end; /* last line of multi-line string */
- char multi_open; /* delimiter of said string */
- char multi_close; /* delimiter of said string */
+ UV multi_open; /* delimiter of said string */
+ UV multi_close; /* delimiter of said string */
bool preambled;
bool lex_re_reparsing; /* we're doing G_RE_REPARSING */
I32 lex_allbrackets;/* (), [], {}, ?: bracket count */
diff --git a/toke.c b/toke.c
index c42d037aa5..d92723aa59 100644
--- a/toke.c
+++ b/toke.c
@@ -10020,7 +10020,8 @@ S_scan_str(pTHX_ char *start, int keep_bracketed_quoted, int keep_delims, int re
/* backslashes can escape the open or closing characters */
if (*s == '\\' && s+1 < PL_bufend) {
if (!keep_bracketed_quoted
- && ((s[1] == PL_multi_open) || (s[1] == PL_multi_close)))
+ && ( ((UV)s[1] == PL_multi_open)
+ || ((UV)s[1] == PL_multi_close) ))
{
s++;
}
@@ -10028,9 +10029,9 @@ S_scan_str(pTHX_ char *start, int keep_bracketed_quoted, int keep_delims, int re
*to++ = *s++;
}
/* allow nested opens and closes */
- else if (*s == PL_multi_close && --brackets <= 0)
+ else if ((UV)*s == PL_multi_close && --brackets <= 0)
break;
- else if (*s == PL_multi_open)
+ else if ((UV)*s == PL_multi_open)
brackets++;
else if (!has_utf8 && !UTF8_IS_INVARIANT((U8)*s) && UTF)
has_utf8 = TRUE;