#define PERL_IN_DUMP_C
#include "perl.h"
#include "regcomp.h"
-#include "proto.h"
static const char* const svtypenames[SVt_LAST] = {
sv_catpv(t, "VOID");
goto finish;
}
- else if (sv == (const SV *)0x55555555 || SvTYPE(sv) == 'U') {
+ else if (sv == (const SV *)0x55555555 || ((char)SvTYPE(sv)) == 'U') {
+ /* detect data corruption under memory poisoning */
sv_catpv(t, "WILD");
goto finish;
}
Perl_sv_catpvf(aTHX_ t, " [UTF8 \"%s\"]",
sv_uni_display(tmp, sv, 6 * SvCUR(sv),
UNI_DISPLAY_QQ));
- SvREFCNT_dec(tmp);
+ SvREFCNT_dec_NN(tmp);
}
}
else if (SvNOKp(sv)) {
if (pm->op_pmflags || (PM_GETRE(pm) && RX_CHECK_SUBSTR(PM_GETRE(pm)))) {
SV * const tmpsv = pm_description(pm);
Perl_dump_indent(aTHX_ level, file, "PMFLAGS = (%s)\n", SvCUR(tmpsv) ? SvPVX_const(tmpsv) + 1 : "");
- SvREFCNT_dec(tmpsv);
+ SvREFCNT_dec_NN(tmpsv);
}
Perl_dump_indent(aTHX_ level-1, file, "}\n");
{(flag), (name)} \
}
-OP_PRIVATE_ONCE(op_aassign, OPpASSIGN_COMMON, ",COMMON");
OP_PRIVATE_ONCE(op_leavesub, OPpREFCOUNTED, ",REFCOUNTED");
OP_PRIVATE_ONCE(op_repeat, OPpREPEAT_DOLIST, ",DOLIST");
OP_PRIVATE_ONCE(op_reverse, OPpREVERSE_INPLACE, ",INPLACE");
{OP_LEAVE, C_ARRAY_LENGTH(op_leavesub_names), op_leavesub_names },
{OP_LEAVESUBLV, C_ARRAY_LENGTH(op_leavesub_names), op_leavesub_names },
{OP_LEAVEWRITE, C_ARRAY_LENGTH(op_leavesub_names), op_leavesub_names },
- {OP_AASSIGN, C_ARRAY_LENGTH(op_aassign_names), op_aassign_names },
{OP_DIE, C_ARRAY_LENGTH(op_die_names), op_die_names },
{OP_DELETE, C_ARRAY_LENGTH(op_delete_names), op_delete_names },
{OP_EXISTS, C_ARRAY_LENGTH(op_exists_names), op_exists_names },
else \
PerlIO_printf(file, " flags=\"%s\"", \
SvCUR(tmpsv) ? SvPVX(tmpsv) + 1 : ""); \
- SvREFCNT_dec(tmpsv); \
+ SvREFCNT_dec_NN(tmpsv); \
}
#if !defined(PERL_MAD)
if (oppriv & OPpFT_AFTER_t) \
sv_catpv(tmpsv, ",AFTER_t"); \
} \
+ else if (o->op_type == OP_AASSIGN) { \
+ if (oppriv & OPpASSIGN_COMMON) \
+ sv_catpvs(tmpsv, ",COMMON"); \
+ if (oppriv & OPpMAYBE_LVSUB) \
+ sv_catpvs(tmpsv, ",MAYBE_LVSUB"); \
+ } \
if (o->op_flags & OPf_MOD && oppriv & OPpLVAL_INTRO) \
sv_catpv(tmpsv, ",INTRO"); \
if (o->op_type == OP_PADRANGE) \
} else if (!xml) \
Perl_dump_indent(aTHX_ level, file, "PRIVATE = (0x%"UVxf")\n", \
(UV)oppriv); \
- SvREFCNT_dec(tmpsv); \
+ SvREFCNT_dec_NN(tmpsv); \
}
level--;
Perl_dump_indent(aTHX_ level, file, "}\n");
- SvREFCNT_dec(tmpsv);
+ SvREFCNT_dec_NN(tmpsv);
}
#endif
if (mg->mg_type != PERL_MAGIC_utf8) {
SV * const sv = newSVpvs("");
PerlIO_printf(file, " %s", pv_display(sv, mg->mg_ptr, mg->mg_len, 0, pvlim));
- SvREFCNT_dec(sv);
+ SvREFCNT_dec_NN(sv);
}
}
else if (mg->mg_len == HEf_SVKEY) {
PerlIO_printf(file, "%s%s\n", svtypenames[type], s);
if (type == SVt_NULL) {
- SvREFCNT_dec(d);
+ SvREFCNT_dec_NN(d);
return;
}
} else {
PerlIO_printf(file, "UNKNOWN(0x%"UVxf") %s\n", (UV)type, s);
- SvREFCNT_dec(d);
+ SvREFCNT_dec_NN(d);
return;
}
}
if (type < SVt_PV) {
- SvREFCNT_dec(d);
+ SvREFCNT_dec_NN(d);
return;
}
}
break;
}
- SvREFCNT_dec(d);
+ SvREFCNT_dec_NN(d);
}
void
#endif
gv_fullname3(sv, cGVOPo_gv, NULL);
PerlIO_printf(Perl_debug_log, "(%s)", SvPV_nolen_const(sv));
- SvREFCNT_dec(sv);
+ SvREFCNT_dec_NN(sv);
}
else
PerlIO_printf(Perl_debug_log, "(NULL)");
sv_catxmlsv(tmpsv, MUTABLE_SV(r));
Perl_xmldump_indent(aTHX_ level, file, "pre=\"%s\"\n",
SvPVX(tmpsv));
- SvREFCNT_dec(tmpsv);
+ SvREFCNT_dec_NN(tmpsv);
Perl_xmldump_indent(aTHX_ level, file, "when=\"%s\"\n",
(pm->op_private & OPpRUNTIME) ? "RUN" : "COMP");
}
if (pm->op_pmflags || (PM_GETRE(pm) && RX_CHECK_SUBSTR(PM_GETRE(pm)))) {
SV * const tmpsv = pm_description(pm);
Perl_xmldump_indent(aTHX_ level, file, "pmflags=\"%s\"\n", SvCUR(tmpsv) ? SvPVX(tmpsv) + 1 : "");
- SvREFCNT_dec(tmpsv);
+ SvREFCNT_dec_NN(tmpsv);
}
level--;
level--;
Perl_xmldump_indent(aTHX_ level, file, "</madprops>\n");
- SvREFCNT_dec(tmpsv);
+ SvREFCNT_dec_NN(tmpsv);
}
switch (optype) {