From: Dmitry Stogov Date: Tue, 25 Feb 2014 09:20:43 +0000 (+0400) Subject: Fixed POST_INC/POST_DEC X-Git-Tag: POST_PHPNG_MERGE~412^2~537 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4e63cf9b1636553177be44d53baf2a8d82f5b100;p=php Fixed POST_INC/POST_DEC --- diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index d200322d48..ee828e7246 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -888,11 +888,12 @@ ZEND_VM_HANDLER(36, ZEND_POST_INC, VAR|CV, ANY) } retval = EX_VAR(opline->result.var); - ZVAL_DUP(retval, var_ptr); if (Z_TYPE_P(var_ptr) == IS_REFERENCE) { var_ptr = Z_REFVAL_P(var_ptr); + ZVAL_DUP(retval, var_ptr); } else { + ZVAL_DUP(retval, var_ptr); SEPARATE_ZVAL(var_ptr); } @@ -934,11 +935,12 @@ ZEND_VM_HANDLER(37, ZEND_POST_DEC, VAR|CV, ANY) } retval = EX_VAR(opline->result.var); - ZVAL_DUP(retval, var_ptr); if (Z_TYPE_P(var_ptr) == IS_REFERENCE) { var_ptr = Z_REFVAL_P(var_ptr); + ZVAL_DUP(retval, var_ptr); } else { + ZVAL_DUP(retval, var_ptr); SEPARATE_ZVAL(var_ptr); } diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 0ac00dd033..f42462d118 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -12293,11 +12293,12 @@ static int ZEND_FASTCALL ZEND_POST_INC_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG } retval = EX_VAR(opline->result.var); - ZVAL_DUP(retval, var_ptr); if (Z_TYPE_P(var_ptr) == IS_REFERENCE) { var_ptr = Z_REFVAL_P(var_ptr); + ZVAL_DUP(retval, var_ptr); } else { + ZVAL_DUP(retval, var_ptr); SEPARATE_ZVAL(var_ptr); } @@ -12339,11 +12340,12 @@ static int ZEND_FASTCALL ZEND_POST_DEC_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG } retval = EX_VAR(opline->result.var); - ZVAL_DUP(retval, var_ptr); if (Z_TYPE_P(var_ptr) == IS_REFERENCE) { var_ptr = Z_REFVAL_P(var_ptr); + ZVAL_DUP(retval, var_ptr); } else { + ZVAL_DUP(retval, var_ptr); SEPARATE_ZVAL(var_ptr); } @@ -29199,11 +29201,12 @@ static int ZEND_FASTCALL ZEND_POST_INC_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS } retval = EX_VAR(opline->result.var); - ZVAL_DUP(retval, var_ptr); if (Z_TYPE_P(var_ptr) == IS_REFERENCE) { var_ptr = Z_REFVAL_P(var_ptr); + ZVAL_DUP(retval, var_ptr); } else { + ZVAL_DUP(retval, var_ptr); SEPARATE_ZVAL(var_ptr); } @@ -29244,11 +29247,12 @@ static int ZEND_FASTCALL ZEND_POST_DEC_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS } retval = EX_VAR(opline->result.var); - ZVAL_DUP(retval, var_ptr); if (Z_TYPE_P(var_ptr) == IS_REFERENCE) { var_ptr = Z_REFVAL_P(var_ptr); + ZVAL_DUP(retval, var_ptr); } else { + ZVAL_DUP(retval, var_ptr); SEPARATE_ZVAL(var_ptr); }