/* end of switch, copy results */
*t = ch;
if (xs == buf && xlen >= sizeof(buf)) { /* Ooops! */
- fputs("panic: sprintf overflow - memory corrupted!\n",stderr);
+ PerlIO_puts(PerlIO_stderr(),"panic: sprintf overflow - memory corrupted!\n");
my_exit(1);
}
SvGROW(sv, SvCUR(sv) + (f - s) + xlen + 1 + pre + post);
goto nope;
len -= rslen - 1;
s -= rslen - 1;
- if (bcmp(s, rsptr, rslen))
+ if (memcmp(s, rsptr, rslen))
goto nope;
count += rslen;
}
register char *rc = SvPV(right, rightlen);
register I32 len;
I32 lensave;
+ char *lsave = lc;
+ char *rsave = rc;
dc = SvPV_force(sv,na);
len = leftlen < rightlen ? leftlen : rightlen;
}
#endif
{
- char *lsave = lc;
- char *rsave = rc;
-
switch (optype) {
case OP_BIT_AND:
while (len--)
if (op->op_type == OP_RV2HV || op->op_type == OP_PADHV)
dokeys = dovalues = TRUE;
- if (!hv)
+ if (!hv) {
+ if (op->op_flags & OPf_MOD) { /* lvalue */
+ dTARGET; /* make sure to clear its target here */
+ if (SvTYPE(TARG) == SVt_PVLV)
+ LvTARG(TARG) = Nullsv;
+ PUSHs(TARG);
+ }
RETURN;
+ }
(void)hv_iterinit(hv); /* always reset iterator regardless */
I32 i;
dTARGET;
+ if (op->op_flags & OPf_MOD) { /* lvalue */
+ if (SvTYPE(TARG) < SVt_PVLV) {
+ sv_upgrade(TARG, SVt_PVLV);
+ sv_magic(TARG, Nullsv, 'k', Nullch, 0);
+ }
+ LvTYPE(TARG) = 'k';
+ LvTARG(TARG) = (SV*)hv;
+ PUSHs(TARG);
+ RETURN;
+ }
+
if (!SvRMAGICAL(hv) || !mg_find((SV*)hv,'P'))
i = HvKEYS(hv);
else {