X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fas3%2Fcode.c;h=5e196def59a9428bd6673223775a742b8ae35fe7;hb=79e69e1d109a95f9495b96b29a723758d06a71d9;hp=6ef68a33e95c27fe49b452dc5f160332a3d8d6e5;hpb=6d87a7d85f89d5b6a22fe6f1e8891ec73ed682f6;p=swftools.git diff --git a/lib/as3/code.c b/lib/as3/code.c index 6ef68a3..5e196de 100644 --- a/lib/as3/code.c +++ b/lib/as3/code.c @@ -1179,11 +1179,11 @@ code_t* cut_last_push(code_t*c) } else if(c->opcode == OPCODE_CALLSUPER) { c->opcode = OPCODE_CALLSUPERVOID; return c; - } else if(c->opcode == OPCODE_NEWOBJECT || - c->opcode == OPCODE_NEWARRAY) { + } else if((c->opcode == OPCODE_NEWOBJECT || + c->opcode == OPCODE_NEWARRAY) && + !c->data[0]) { // we can discard these if they're not eating up stack parameters - if(!c->data[0]) - return code_cutlast(c); + return code_cutlast(c); } else if(op->stack_minus ==0 && op->stack_plus == 0 && !(op->flags&~(OP_REGISTER|OP_SET_DXNS)) && c->prev) { // trim code *before* the kill, inclocal, declocal, dxns