diff options
-rw-r--r-- | pod/perldiag.pod | 4 | ||||
-rw-r--r-- | regcomp.c | 7 |
2 files changed, 9 insertions, 2 deletions
diff --git a/pod/perldiag.pod b/pod/perldiag.pod index 7808f88f06..d140b0a9c1 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -1328,7 +1328,9 @@ unlikely to be what you want. =item Empty %s -(F) Empty C<\p{}> or C<\P{}>. +(F) C<\p> and C<\P> are used to introduce a named Unicode property, as +described in L<perlunicode> and L<perlre>. You used C<\p> or C<\P> in +a regular expression without specifying the property name. =item entering effective %s failed @@ -2970,8 +2970,11 @@ tryagain: } RExC_end++; } - else + else { RExC_end = RExC_parse + 2; + if (RExC_end > oldregxend) + RExC_end = oldregxend; + } RExC_parse--; ret = regclass(pRExC_state); @@ -3593,6 +3596,8 @@ S_regclass(pTHX_ RExC_state_t *pRExC_state) case 'D': namedclass = ANYOF_NDIGIT; break; case 'p': case 'P': + if (RExC_parse >= RExC_end) + vFAIL("Empty \\p{}"); if (*RExC_parse == '{') { U8 c = (U8)value; e = strchr(RExC_parse++, '}'); |