X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pp_hot.c;h=0f13d5ad5cc74d08ba2f8c882eaca6a3a6bdaf7c;hb=355d3743e65e97364accabb20981fd9938de341c;hp=2a08525cc094fea47ee9bc92ed61f9142a06e9c5;hpb=e52fd6f4ebd87d6146c934dfc974265434a96d9b;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pp_hot.c b/pp_hot.c index 2a08525..0f13d5a 100644 --- a/pp_hot.c +++ b/pp_hot.c @@ -329,21 +329,23 @@ PP(pp_or) 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: @@ -370,11 +372,11 @@ PP(pp_defined) 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)