From ba52ce15fe5ca68de1be69e394f41ccb48a731cc Mon Sep 17 00:00:00 2001 From: Karl Williamson Date: Tue, 19 Dec 2017 16:03:39 -0700 Subject: Deprecate above \xFF in bitwise string ops This is already a fatal error for operations whose outcome depends on them, but in things like "abc" & "def\x{100}" the wide character doesn't actually need to participate in the AND, and so perl doesn't. As a result of the discussion in the thread beginning with http://nntp.perl.org/group/perl.perl5.porters/244884, it was decided to deprecate these ones too. --- doop.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'doop.c') diff --git a/doop.c b/doop.c index f5a40efaae..afbbcdae5d 100644 --- a/doop.c +++ b/doop.c @@ -1095,6 +1095,7 @@ Perl_do_vop(pTHX_ I32 optype, SV *sv, SV *left, SV *right) * portion. That means that at least one of the operands has to be * entirely non-UTF-8, and the length of that operand has to be before the * first above-FF in the other */ + if (left_utf8 || right_utf8) { if (left_utf8) { if (right_utf8 || rightlen > leftlen) { Perl_croak(aTHX_ fatal_above_ff_msg, PL_op_desc[optype]); @@ -1107,6 +1108,10 @@ Perl_do_vop(pTHX_ I32 optype, SV *sv, SV *left, SV *right) } len = leftlen; } + + Perl_ck_warner_d(aTHX_ packWARN(WARN_DEPRECATED), + deprecated_above_ff_msg, PL_op_desc[optype]); + } else { /* Neither is UTF-8 */ len = MIN(leftlen, rightlen); } -- cgit v1.2.1