|
|
dcb3b7 |
From 9df34f9c4701104a366e768237ca694411136d2a Mon Sep 17 00:00:00 2001
|
|
|
dcb3b7 |
From: Hugo van der Sanden <hv@crypt.org>
|
|
|
dcb3b7 |
Date: Sun, 19 Feb 2017 10:46:09 +0000
|
|
|
dcb3b7 |
Subject: [PATCH] update pointer into PL_linestr after lookahead
|
|
|
dcb3b7 |
MIME-Version: 1.0
|
|
|
dcb3b7 |
Content-Type: text/plain; charset=UTF-8
|
|
|
dcb3b7 |
Content-Transfer-Encoding: 8bit
|
|
|
dcb3b7 |
|
|
|
dcb3b7 |
Ported to: 5.24.1:
|
|
|
dcb3b7 |
|
|
|
dcb3b7 |
commit 90f2cc9a600117a49f8ee3e30cc681f062350c24
|
|
|
dcb3b7 |
Author: Hugo van der Sanden <hv@crypt.org>
|
|
|
dcb3b7 |
Date: Sun Feb 19 10:46:09 2017 +0000
|
|
|
dcb3b7 |
|
|
|
dcb3b7 |
[perl #130814] update pointer into PL_linestr after lookahead
|
|
|
dcb3b7 |
|
|
|
dcb3b7 |
Looking ahead for the "Missing $ on loop variable" diagnostic can reallocate
|
|
|
dcb3b7 |
PL_linestr, invalidating our pointer. Save the offset so we can update it
|
|
|
dcb3b7 |
in that case.
|
|
|
dcb3b7 |
|
|
|
dcb3b7 |
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
|
|
dcb3b7 |
---
|
|
|
dcb3b7 |
toke.c | 4 ++++
|
|
|
dcb3b7 |
1 file changed, 4 insertions(+)
|
|
|
dcb3b7 |
|
|
|
dcb3b7 |
diff --git a/toke.c b/toke.c
|
|
|
dcb3b7 |
index 630fc59..029d2ea 100644
|
|
|
dcb3b7 |
--- a/toke.c
|
|
|
dcb3b7 |
+++ b/toke.c
|
|
|
dcb3b7 |
@@ -7565,6 +7565,7 @@ Perl_yylex(pTHX)
|
|
|
dcb3b7 |
s = skipspace(s);
|
|
|
dcb3b7 |
if (PL_expect == XSTATE && isIDFIRST_lazy_if(s,UTF)) {
|
|
|
dcb3b7 |
char *p = s;
|
|
|
dcb3b7 |
+ SSize_t s_off = s - SvPVX(PL_linestr);
|
|
|
dcb3b7 |
|
|
|
dcb3b7 |
if ((PL_bufend - p) >= 3
|
|
|
dcb3b7 |
&& strnEQ(p, "my", 2) && isSPACE(*(p + 2)))
|
|
|
dcb3b7 |
@@ -7582,6 +7583,9 @@ Perl_yylex(pTHX)
|
|
|
dcb3b7 |
}
|
|
|
dcb3b7 |
if (*p != '$')
|
|
|
dcb3b7 |
Perl_croak(aTHX_ "Missing $ on loop variable");
|
|
|
dcb3b7 |
+
|
|
|
dcb3b7 |
+ /* The buffer may have been reallocated, update s */
|
|
|
dcb3b7 |
+ s = SvPVX(PL_linestr) + s_off;
|
|
|
dcb3b7 |
}
|
|
|
dcb3b7 |
OPERATOR(FOR);
|
|
|
dcb3b7 |
|
|
|
dcb3b7 |
--
|
|
|
dcb3b7 |
2.7.4
|
|
|
dcb3b7 |
|