diff options
-rw-r--r-- | parser.h | 4 | ||||
-rw-r--r-- | toke.c | 7 |
2 files changed, 6 insertions, 5 deletions
@@ -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 */ @@ -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; |