From 4e63cf9b1636553177be44d53baf2a8d82f5b100 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Tue, 25 Feb 2014 13:20:43 +0400 Subject: [PATCH] Fixed POST_INC/POST_DEC --- Zend/zend_vm_def.h | 6 ++++-- Zend/zend_vm_execute.h | 12 ++++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) 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); } -- 2.50.1