static void
check_new_and_strlen(struct state *st, const char *const p) {
if(check_new(st, p))
- st->total_size += strlen(p);
+ st->total_size += 1 + strlen(p);
}
static void
TAG;break;
case OPc_SVOP: TAG;
st->total_size += sizeof(struct pmop);
- sv_size(aTHX_ st, cSVOPx(baseop)->op_sv, TRUE);
+ if (!(baseop->op_type == OP_AELEMFAST
+ && baseop->op_flags & OPf_SPECIAL)) {
+ /* not an OP_PADAV replacement */
+ sv_size(aTHX_ st, cSVOPx(baseop)->op_sv, TRUE);
+ }
TAG;break;
case OPc_PADOP: TAG;
st->total_size += sizeof(struct padop);
TAG;break;
case OPc_PVOP: TAG;
check_new_and_strlen(st, cPVOPx(baseop)->op_pv);
+ TAG;break;
case OPc_LOOP: TAG;
st->total_size += sizeof(struct loop);
op_size(aTHX_ cLOOPx(baseop)->op_first, st);