develooper Front page | perl.perl5.changes | Postings from March 2019

[perl.git] branch smoke-me/khw-regcomp updated.v5.29.8-88-g3747109886

From:
Karl Williamson
Date:
March 13, 2019 15:43
Subject:
[perl.git] branch smoke-me/khw-regcomp updated.v5.29.8-88-g3747109886
Message ID:
E1h4621-0002x4-5R@git.dc.perl.space
In perl.git, the branch smoke-me/khw-regcomp has been updated

<https://perl5.git.perl.org/perl.git/commitdiff/3747109886ee630f649373b96efb2bf8cbdca1c6?hp=6ee8cbcd7dc77d2da268a3abf6d8c3de1fba5f6e>

- Log -----------------------------------------------------------------
commit 3747109886ee630f649373b96efb2bf8cbdca1c6
Author: Karl Williamson <khw@cpan.org>
Date:   Wed Mar 13 09:42:01 2019 -0600

    f

-----------------------------------------------------------------------

Summary of changes:
 toke.c | 26 ++++++++++++++++----------
 1 file changed, 16 insertions(+), 10 deletions(-)

diff --git a/toke.c b/toke.c
index 0805e84250..0435c6f089 100644
--- a/toke.c
+++ b/toke.c
@@ -2629,22 +2629,21 @@ Perl_get_and_check_backslash_N_name(pTHX_ const char* s,
      * doesn't have to be. */
 
     SV* res;
-    dVAR;
-
-    assert(e >= s);
-    assert(s > (char *) 3);
-
-    res = newSVpvn_flags(s, e - s, (is_utf8) ? SVf_UTF8 : 0);
-
     HV * table;
     SV **cvp;
     SV *cv;
     SV *rv;
     HV *stash;
     const char* backslash_ptr = s - 3; /* Points to the <\> of \N{... */
+    dVAR;
 
     PERL_ARGS_ASSERT_GET_AND_CHECK_BACKSLASH_N_NAME;
 
+    assert(e >= s);
+    assert(s > (char *) 3);
+
+    res = newSVpvn_flags(s, e - s, (is_utf8) ? SVf_UTF8 : 0);
+
     if (!SvCUR(res)) {
         SvREFCNT_dec_NN(res);
         /* diag_listed_as: Unknown charname '%s' */
@@ -10714,9 +10713,16 @@ S_scan_str(pTHX_ char *start, int keep_bracketed_quoted, int keep_delims, int re
 		if (*s == '\n' && !PL_rsfp && !PL_parser->filtered)
 		    COPLINE_INC_WITH_HERELINES;
 		/* handle quoted delimiters */
-		if (*s == '\\' && s+1 < PL_bufend && term != '\\') {
-		    if (!keep_bracketed_quoted
-		        && (s[1] == term
+		if (   *s == '\\'
+                    && s+1 < PL_bufend
+                    && term != '\\'
+                    && (   ! keep_delims
+                        || s - start < 2        // XXX only in dquotish contexts Now unsure what this was for
+                        || *(s - 1) != 'c'
+                        || *(s - 2) != '\\'))
+                {
+		    if (   ! keep_bracketed_quoted
+		        && (    s[1] == term
 			    || (re_reparse && s[1] == '\\'))
 		    )
 			s++;

-- 
Perl5 Master Repository



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About