]> granicus.if.org Git - php/commitdiff
Fixed POST_INC/POST_DEC
authorDmitry Stogov <dmitry@zend.com>
Tue, 25 Feb 2014 09:20:43 +0000 (13:20 +0400)
committerDmitry Stogov <dmitry@zend.com>
Tue, 25 Feb 2014 09:20:43 +0000 (13:20 +0400)
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index d200322d48aac5182efad591d6477a69056abc42..ee828e72463d5dbf4a55b278a88dc308440badaa 100644 (file)
@@ -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);
        }
 
index 0ac00dd033f8d5ff45222bf58b7acdbf4eda3c48..f42462d118ca305455aaa3b82afa53c71034a7a5 100644 (file)
@@ -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);
        }