const char *rsave;
bool left_utf;
bool right_utf;
+ bool do_warn_above_ff = ckWARN_d(WARN_DEPRECATED);
STRLEN needlen = 0;
PERL_ARGS_ASSERT_DO_VOP;
rulen -= ulen;
duc = luc & ruc;
dc = (char*)uvchr_to_utf8((U8*)dc, duc);
+ if (do_warn_above_ff && (luc > 0xff || ruc > 0xff)) {
+ Perl_warner(aTHX_ packWARN(WARN_DEPRECATED),
+ deprecated_above_ff_msg, PL_op_desc[optype]);
+ /* Warn only once per operation */
+ do_warn_above_ff = FALSE;
+ }
}
if (sv == left || sv == right)
(void)sv_usepvn(sv, dcorig, needlen);
rulen -= ulen;
duc = luc ^ ruc;
dc = (char*)uvchr_to_utf8((U8*)dc, duc);
+ if (do_warn_above_ff && (luc > 0xff || ruc > 0xff)) {
+ Perl_warner(aTHX_ packWARN(WARN_DEPRECATED),
+ deprecated_above_ff_msg, PL_op_desc[optype]);
+ do_warn_above_ff = FALSE;
+ }
}
goto mop_up_utf;
case OP_BIT_OR:
rulen -= ulen;
duc = luc | ruc;
dc = (char*)uvchr_to_utf8((U8*)dc, duc);
+ if (do_warn_above_ff && (luc > 0xff || ruc > 0xff)) {
+ Perl_warner(aTHX_ packWARN(WARN_DEPRECATED),
+ deprecated_above_ff_msg, PL_op_desc[optype]);
+ do_warn_above_ff = FALSE;
+ }
}
mop_up_utf:
if (rulen)
HV * const keys = MUTABLE_HV(POPs);
HE *entry;
SSize_t extend_size;
- const I32 gimme = GIMME_V;
+ const U8 gimme = GIMME_V;
const I32 dokv = (PL_op->op_type == OP_RV2HV || PL_op->op_type == OP_PADHV);
/* op_type is OP_RKEYS/OP_RVALUES if pp_rkeys delegated to here */
const I32 dokeys = dokv || (PL_op->op_type == OP_KEYS);