#include "perl.h"
#ifndef PERL_MICRO
-#if !defined(NSIG) || defined(M_UNIX) || defined(M_XENIX)
#include <signal.h>
#endif
-#endif
STATIC I32
S_do_trans_simple(pTHX_ SV *sv)
s = (U8*)SvPV(sv, len);
send = s + len;
- /* First, take care of non-UTF8 input strings, because they're easy */
+ /* First, take care of non-UTF-8 input strings, because they're easy */
if (!SvUTF8(sv)) {
while (s < send) {
if ((ch = tbl[*s]) >= 0) {
DEBUG_t( Perl_deb(aTHX_ "2.TBL\n"));
- switch (PL_op->op_private & ~hasutf & 63) {
+ switch (PL_op->op_private & ~hasutf & (
+ OPpTRANS_FROM_UTF|OPpTRANS_TO_UTF|OPpTRANS_IDENTICAL|
+ OPpTRANS_SQUASH|OPpTRANS_DELETE|OPpTRANS_COMPLEMENT)) {
case 0:
if (hasutf)
return do_trans_simple_utf8(sv);
++mark;
}
- sv_setpv(sv, "");
+ sv_setpvn(sv, "", 0);
+ /* sv_setpv retains old UTF8ness [perl #24846] */
+ if (SvUTF8(sv))
+ SvUTF8_off(sv);
+
if (PL_tainting && SvMAGICAL(sv))
SvTAINTED_off(sv);