summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pod/perldiag.pod4
-rw-r--r--regcomp.c7
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
diff --git a/regcomp.c b/regcomp.c
index 12f9016a4b..c124d48405 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -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++, '}');