From 85a4c68d184e67cf8b7c1ebad7d3efc13516d192 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppi...@redhat.com>
Date: Mon, 19 Jun 2017 14:03:21 +0200
Subject: Fix spurious "Assuming NOT a POSIX class" warning

---
 ...l-131522-Spurious-Assuming-NOT-a-POSIX-cl.patch | 135 +++++++++++++++++++++
 ...r-perl-131522-and-fix-test-for-related-pe.patch |  39 ++++++
 perl.spec                                          |   9 ++
 3 files changed, 183 insertions(+)
 create mode 100644 
perl-5.27.0-Resolve-Perl-131522-Spurious-Assuming-NOT-a-POSIX-cl.patch
 create mode 100644 
perl-5.27.0-add-test-for-perl-131522-and-fix-test-for-related-pe.patch

diff --git 
a/perl-5.27.0-Resolve-Perl-131522-Spurious-Assuming-NOT-a-POSIX-cl.patch 
b/perl-5.27.0-Resolve-Perl-131522-Spurious-Assuming-NOT-a-POSIX-cl.patch
new file mode 100644
index 0000000..8f05cc7
--- /dev/null
+++ b/perl-5.27.0-Resolve-Perl-131522-Spurious-Assuming-NOT-a-POSIX-cl.patch
@@ -0,0 +1,135 @@
+From bab0f8e933b383b6bef406d79c2da340bbcded33 Mon Sep 17 00:00:00 2001
+From: Yves Orton <demer...@gmail.com>
+Date: Sun, 18 Jun 2017 20:45:30 +0200
+Subject: [PATCH 1/2] Resolve Perl #131522: Spurious "Assuming NOT a POSIX
+ class" warning
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Petr Písař <ppi...@redhat.com>
+---
+ regcomp.c | 30 ++++++++++++++++++------------
+ 1 file changed, 18 insertions(+), 12 deletions(-)
+
+diff --git a/regcomp.c b/regcomp.c
+index 8921eed..0a4ea78 100644
+--- a/regcomp.c
++++ b/regcomp.c
+@@ -13991,6 +13991,13 @@ S_populate_ANYOF_from_invlist(pTHX_ regnode *node, 
SV** invlist_ptr)
+                                              REPORT_LOCATION_ARGS(p)));     \
+         }                                                                   \
+     } STMT_END
++#define CLEAR_POSIX_WARNINGS()                                              \
++    if (posix_warnings && RExC_warn_text)                                   \
++        av_clear(RExC_warn_text)
++
++#define CLEAR_POSIX_WARNINGS_AND_RETURN(ret)                                \
++    CLEAR_POSIX_WARNINGS();                                                 \
++    return ret
+ 
+ STATIC int
+ S_handle_possible_posix(pTHX_ RExC_state_t *pRExC_state,
+@@ -14063,7 +14070,7 @@ S_handle_possible_posix(pTHX_ RExC_state_t 
*pRExC_state,
+      *
+      * The syntax for a legal posix class is:
+      *
+-     * qr/(?xa: \[ : \^? [:lower:]{4,6} : \] )/
++     * qr/(?xa: \[ : \^? [[:lower:]]{4,6} : \] )/
+      *
+      * What this routine considers syntactically to be an intended posix class
+      * is this (the comments indicate some restrictions that the pattern
+@@ -14088,7 +14095,7 @@ S_handle_possible_posix(pTHX_ RExC_state_t 
*pRExC_state,
+      *                                      # for it to be considered to be
+      *                                      # an intended posix class.
+      *          \h*
+-     *          [:punct:]?                  # The closing class character,
++     *          [[:punct:]]?                # The closing class character,
+      *                                      # possibly omitted.  If not a 
colon
+      *                                      # nor semi colon, the class name
+      *                                      # must be even closer to a valid
+@@ -14131,8 +14138,7 @@ S_handle_possible_posix(pTHX_ RExC_state_t 
*pRExC_state,
+ 
+     PERL_ARGS_ASSERT_HANDLE_POSSIBLE_POSIX;
+ 
+-    if (posix_warnings && RExC_warn_text)
+-        av_clear(RExC_warn_text);
++    CLEAR_POSIX_WARNINGS();
+ 
+     if (p >= e) {
+         return NOT_MEANT_TO_BE_A_POSIX_CLASS;
+@@ -14224,7 +14230,7 @@ S_handle_possible_posix(pTHX_ RExC_state_t 
*pRExC_state,
+                     *updated_parse_ptr = (char *) temp_ptr;
+                 }
+ 
+-                return OOB_NAMEDCLASS;
++                CLEAR_POSIX_WARNINGS_AND_RETURN(OOB_NAMEDCLASS);
+             }
+         }
+ 
+@@ -14294,7 +14300,7 @@ S_handle_possible_posix(pTHX_ RExC_state_t 
*pRExC_state,
+         /* We consider something like [^:^alnum:]] to not have been intended 
to
+          * be a posix class, but XXX maybe we should */
+         if (complement) {
+-            return NOT_MEANT_TO_BE_A_POSIX_CLASS;
++            CLEAR_POSIX_WARNINGS_AND_RETURN(NOT_MEANT_TO_BE_A_POSIX_CLASS);
+         }
+ 
+         complement = 1;
+@@ -14321,7 +14327,7 @@ S_handle_possible_posix(pTHX_ RExC_state_t 
*pRExC_state,
+          * this leaves this construct looking like [:] or [:^], which almost
+          * certainly weren't intended to be posix classes */
+         if (has_opening_bracket) {
+-            return NOT_MEANT_TO_BE_A_POSIX_CLASS;
++            CLEAR_POSIX_WARNINGS_AND_RETURN(NOT_MEANT_TO_BE_A_POSIX_CLASS);
+         }
+ 
+         /* But this function can be called when we parse the colon for
+@@ -14338,7 +14344,7 @@ S_handle_possible_posix(pTHX_ RExC_state_t 
*pRExC_state,
+             /* XXX We are currently very restrictive here, so this code 
doesn't
+              * consider the possibility that, say, /[alpha.]]/ was intended to
+              * be a posix class. */
+-            return NOT_MEANT_TO_BE_A_POSIX_CLASS;
++            CLEAR_POSIX_WARNINGS_AND_RETURN(NOT_MEANT_TO_BE_A_POSIX_CLASS);
+         }
+ 
+         /* Here we have something like 'foo:]'.  There was no initial colon,
+@@ -14508,7 +14514,7 @@ S_handle_possible_posix(pTHX_ RExC_state_t 
*pRExC_state,
+             }
+ 
+             /* Otherwise, it can't have meant to have been a class */
+-            return NOT_MEANT_TO_BE_A_POSIX_CLASS;
++            CLEAR_POSIX_WARNINGS_AND_RETURN(NOT_MEANT_TO_BE_A_POSIX_CLASS);
+         }
+ 
+         /* If we ran off the end, and the final character was a punctuation
+@@ -14558,7 +14564,7 @@ S_handle_possible_posix(pTHX_ RExC_state_t 
*pRExC_state,
+          * class name.  (We can do this on the first pass, as any second pass
+          * will yield an even shorter name) */
+         if (name_len < 3) {
+-            return NOT_MEANT_TO_BE_A_POSIX_CLASS;
++            CLEAR_POSIX_WARNINGS_AND_RETURN(NOT_MEANT_TO_BE_A_POSIX_CLASS);
+         }
+ 
+         /* Find which class it is.  Initially switch on the length of the 
name.
+@@ -14717,7 +14723,7 @@ S_handle_possible_posix(pTHX_ RExC_state_t 
*pRExC_state,
+             }
+ 
+             /* Here neither pass found a close-enough class name */
+-            return NOT_MEANT_TO_BE_A_POSIX_CLASS;
++            CLEAR_POSIX_WARNINGS_AND_RETURN(NOT_MEANT_TO_BE_A_POSIX_CLASS);
+         }
+ 
+     probably_meant_to_be:
+@@ -14759,7 +14765,7 @@ S_handle_possible_posix(pTHX_ RExC_state_t 
*pRExC_state,
+             /* If it is a known class, return the class.  The class number
+              * #defines are structured so each complement is +1 to the normal
+              * one */
+-            return class_number + complement;
++            CLEAR_POSIX_WARNINGS_AND_RETURN(class_number + complement);
+         }
+         else if (! check_only) {
+ 
+-- 
+2.9.4
+
diff --git 
a/perl-5.27.0-add-test-for-perl-131522-and-fix-test-for-related-pe.patch 
b/perl-5.27.0-add-test-for-perl-131522-and-fix-test-for-related-pe.patch
new file mode 100644
index 0000000..7a465d9
--- /dev/null
+++ b/perl-5.27.0-add-test-for-perl-131522-and-fix-test-for-related-pe.patch
@@ -0,0 +1,39 @@
+From d730a80128abafff1e47e2506c23a8c1a06cfef4 Mon Sep 17 00:00:00 2001
+From: Yves Orton <demer...@gmail.com>
+Date: Sun, 18 Jun 2017 23:44:07 +0200
+Subject: [PATCH 2/2] add test for [perl #131522] and fix test for (related)
+ [perl #127581]
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Petr Písař <ppi...@redhat.com>
+---
+ t/re/reg_mesg.t | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/t/re/reg_mesg.t b/t/re/reg_mesg.t
+index 090eccb..a0b78c4 100644
+--- a/t/re/reg_mesg.t
++++ b/t/re/reg_mesg.t
+@@ -221,7 +221,6 @@ my @death =
+  '/(?[[[::]]])/' => "Syntax error in (?[...]) in regex m/(?[[[::]]])/",
+  '/(?[[[:w:]]])/' => "Syntax error in (?[...]) in regex m/(?[[[:w:]]])/",
+  '/(?[[:w:]])/' => "",
+- '/[][[:alpha:]]' => "",    # [perl #127581]
+  '/([.].*)[.]/'   => "",    # [perl #127582]
+  '/[.].*[.]/'     => "",    # [perl #127604]
+  '/(?[a])/' =>  'Unexpected character {#} m/(?[a{#}])/',
+@@ -587,7 +586,8 @@ my @warning = (
+                                   'Assuming NOT a POSIX class since a 
semi-colon was found instead of a colon {#} m/[foo;{#}punct;]]\x{100}/',
+                                   'Assuming NOT a POSIX class since a 
semi-colon was found instead of a colon {#} m/[foo;punct;]{#}]\x{100}/',
+                                 ],
+-
++   '/[][[:alpha:]]/' => "",        # [perl #127581]
++   '/[][[:alpha:]\\@\\\\^_?]/' => "", # [perl #131522]
+ ); # See comments before this for why '\x{100}' is generally needed
+ 
+ # These need the character 'ネ' as a marker for mark_as_utf8()
+-- 
+2.9.4
+
diff --git a/perl.spec b/perl.spec
index 8938e4c..fcf0d3e 100644
--- a/perl.spec
+++ b/perl.spec
@@ -169,6 +169,11 @@ Patch38:        
perl-5.27.0-perl-129183-don-t-treat-as-an-escape-in-PATH-for-S.p
 # RT#131575, in upstream after 5.27.0
 Patch39:        
perl-5.26.0-don-t-call-Perl_fbm_instr-with-negative-length.patch
 
+# Fix spurious "Assuming NOT a POSIX class" warning, RT#131522,
+# in upsteam after 5.27.0
+Patch40:        
perl-5.27.0-Resolve-Perl-131522-Spurious-Assuming-NOT-a-POSIX-cl.patch
+Patch41:        
perl-5.27.0-add-test-for-perl-131522-and-fix-test-for-related-pe.patch
+
 # Link XS modules to libperl.so with EU::CBuilder on Linux, bug #960048
 Patch200:       
perl-5.16.3-Link-XS-modules-to-libperl.so-with-EU-CBuilder-on-Li.patch
 
@@ -2826,6 +2831,8 @@ Perl extension for Version Objects
 %patch37 -p1
 %patch38 -p1
 %patch39 -p1
+%patch40 -p1
+%patch41 -p1
 %patch200 -p1
 %patch201 -p1
 
@@ -2854,6 +2861,7 @@ perl -x patchlevel.h \
     'Fedora Patch37: Fix a buffer overflow in my_atof2() (RT#131526)' \
     'Fedora Patch38: Fix handling backslashes in PATH environment variable 
when executing "perl -S" (RT#129183)' \
     'Fedora Patch39: Fix a conditional jump on uninitilized memory in 
re_intuit_start() (RT#131575)' \
+    'Fedora Patch40: Fix spurious "Assuming NOT a POSIX class" warning 
(RT#131522)' \
     'Fedora Patch200: Link XS modules to libperl.so with EU::CBuilder on 
Linux' \
     'Fedora Patch201: Link XS modules to libperl.so with EU::MM on Linux' \
     %{nil}
@@ -5146,6 +5154,7 @@ popd
 - Fix handling backslashes in PATH environment variable when executing
   "perl -S" (RT#129183)
 - Fix a conditional jump on uninitilized memory in re_intuit_start() 
(RT#131575)
+- Fix spurious "Assuming NOT a POSIX class" warning (RT#131522)
 
 * Tue Jun 06 2017 Jitka Plesnikova <jples...@redhat.com> - 4:5.26.0-393
 - Stop providing old perl(MODULE_COMPAT_5.24.*)
-- 
cgit v1.1


        
https://src.fedoraproject.org/cgit/perl.git/commit/?h=master&id=85a4c68d184e67cf8b7c1ebad7d3efc13516d192
_______________________________________________
perl-devel mailing list -- perl-devel@lists.fedoraproject.org
To unsubscribe send an email to perl-devel-le...@lists.fedoraproject.org

Reply via email to