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

[perl.git] branch blead updated. v5.29.8-137-g52bcf2657b

From:
Karl Williamson
Date:
March 19, 2019 16:20
Subject:
[perl.git] branch blead updated. v5.29.8-137-g52bcf2657b
Message ID:
E1h6HTc-0006HR-Ck@git.dc.perl.space
In perl.git, the branch blead has been updated

<https://perl5.git.perl.org/perl.git/commitdiff/52bcf2657b8c6ee52d2eeb841fc2607db893f58f?hp=44b0aff01ba282b14dc62a1137996136282bc17a>

- Log -----------------------------------------------------------------
commit 52bcf2657b8c6ee52d2eeb841fc2607db893f58f
Author: Karl Williamson <khw@cpan.org>
Date:   Mon Mar 18 21:43:34 2019 -0600

    regexec.c: Add comments

commit 9edbb8b2d2f1fc6dd6ab01894735f5fd43a32966
Author: Karl Williamson <khw@cpan.org>
Date:   Mon Mar 18 21:17:03 2019 -0600

    pp.c, pp_sys.c: Use DO_UTF8 instead of its expansion
    
    We have a macro to hide the details of this; use it

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

Summary of changes:
 pp.c      | 2 +-
 pp_sys.c  | 2 +-
 regexec.c | 7 +++++++
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/pp.c b/pp.c
index c7fa23189d..42b111ea32 100644
--- a/pp.c
+++ b/pp.c
@@ -4012,7 +4012,7 @@ PP(pp_ucfirst)
 
 	/* In a "use bytes" we don't treat the source as UTF-8, but, still want
 	 * the destination to retain that flag */
-	if (SvUTF8(source) && ! IN_BYTES)
+	if (DO_UTF8(source))
 	    SvUTF8_on(dest);
 
 	if (!inplace) {	/* Finish the rest of the string, unchanged */
diff --git a/pp_sys.c b/pp_sys.c
index e28e8906f1..304e1b50f8 100644
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -1736,7 +1736,7 @@ PP(pp_sysread)
     }
     else {
 	buffer = SvPV_force(bufsv, blen);
-	buffer_utf8 = !IN_BYTES && SvUTF8(bufsv);
+	buffer_utf8 = DO_UTF8(bufsv);
     }
     if (DO_UTF8(bufsv)) {
 	blen = sv_len_utf8_nomg(bufsv);
diff --git a/regexec.c b/regexec.c
index deecde7c8e..cd0a94fa5f 100644
--- a/regexec.c
+++ b/regexec.c
@@ -6127,6 +6127,8 @@ S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *prog)
 
 		    while (chars) {
 			if (utf8_target) {
+                            /* XXX This assumes the length is well-formed, as
+                             * does the UTF8SKIP below */
 			    uvc = utf8n_to_uvchr((U8*)uc, UTF8_MAXLEN, &len,
 						    uniflags);
 			    uc += len;
@@ -8235,6 +8237,11 @@ NULL
 		);
 	    if (! NEXTCHR_IS_EOS && ST.c1 != CHRTEST_VOID) {
                 if (! UTF8_IS_INVARIANT(nextchr) && utf8_target) {
+
+                           /* (We can use memEQ and memNE in this file without
+                            * having to worry about one being shorter than the
+                            * other, since the first byte of each gives the
+                            * length of the character) */
                     if (memNE(locinput, ST.c1_utf8, UTF8SKIP(locinput))
                         && memNE(locinput, ST.c2_utf8, UTF8SKIP(locinput)))
                     {

-- 
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