#define PERL_IN_DOOP_C
#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_CC_simple(pTHX_ SV *sv)
return 0;
if (!SvPOKp(sv))
(void)SvPV_force(sv, len);
- (void)SvPOK_only(sv);
+ if (!(PL_op->op_private & OPpTRANS_IDENTICAL))
+ (void)SvPOK_only_UTF8(sv);
DEBUG_t( Perl_deb(aTHX_ "2.TBL\n"));
if (items-- > 0) {
char *s;
- if (*mark) {
- s = SvPV(*mark, tmplen);
- sv_setpvn(sv, s, tmplen);
- }
- else
- sv_setpv(sv, "");
+ sv_setpv(sv, "");
+ if (*mark)
+ sv_catsv(sv, *mark);
mark++;
}
else
SvTAINTED_on(sv);
}
+/* XXX SvUTF8 support missing! */
UV
Perl_do_vecget(pTHX_ SV *sv, I32 offset, I32 size)
{
return retnum;
}
+/* XXX SvUTF8 support missing! */
void
Perl_do_vecset(pTHX_ SV *sv)
{
if (!targ)
return;
s = (unsigned char*)SvPV_force(targ, targlen);
+ (void)SvPOK_only(targ);
lval = SvUV(sv);
offset = LvTARGOFF(sv);
size = LvTARGLEN(sv);
len = (offset + size + 7) / 8; /* required number of bytes */
if (len > targlen) {
s = (unsigned char*)SvGROW(targ, len + 1);
- (void)memzero(s + targlen, len - targlen + 1);
+ (void)memzero((char *)(s + targlen), len - targlen + 1);
SvCUR_set(targ, len);
}
STRLEN dulen = 0;
I32 ulen;
+ if (optype != OP_BIT_AND)
+ dc = SvGROW(sv, leftlen+rightlen+1);
+
switch (optype) {
case OP_BIT_AND:
while (lulen && rulen) {