PP(pp_defined)
{
dSP;
- register SV* sv;
+ register SV* sv = NULL;
bool defined = FALSE;
const int op_type = PL_op->op_type;
if(op_type == OP_DOR || op_type == OP_DORASSIGN) {
sv = TOPs;
if (!sv || !SvANY(sv)) {
- --SP;
+ if (op_type == OP_DOR)
+ --SP;
RETURNOP(cLOGOP->op_other);
}
} else if (op_type == OP_DEFINED) {
sv = POPs;
if (!sv || !SvANY(sv))
RETPUSHNO;
- }
+ } else
+ DIE(aTHX_ "panic: Invalid op (%s) in pp_defined()", OP_NAME(PL_op));
switch (SvTYPE(sv)) {
case SVt_PVAV:
if(op_type == OP_DOR)
--SP;
RETURNOP(cLOGOP->op_other);
- } else if (op_type == OP_DEFINED) {
- if(defined)
- RETPUSHYES;
- RETPUSHNO;
}
+ /* assuming OP_DEFINED */
+ if(defined)
+ RETPUSHYES;
+ RETPUSHNO;
}
PP(pp_add)