]> granicus.if.org Git - php/commitdiff
Fixed reference counting
authorDmitry Stogov <dmitry@zend.com>
Thu, 27 Feb 2014 19:25:41 +0000 (23:25 +0400)
committerDmitry Stogov <dmitry@zend.com>
Thu, 27 Feb 2014 19:25:41 +0000 (23:25 +0400)
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 7fd005fa8d08ceb9df43a44fda438cb5aeb813e3..ad73af96855c61fdd413085c11758b56dd63a959 100644 (file)
@@ -643,7 +643,7 @@ ZEND_VM_HELPER_EX(zend_pre_incdec_property_helper, VAR|UNUSED|CV, CONST|TMP|VAR|
                                }
                                z = value;
                        }
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        SEPARATE_ZVAL_IF_NOT_REF(z);
                        incdec_op(z);
                        ZVAL_COPY_VALUE(retval, z);
@@ -744,7 +744,7 @@ ZEND_VM_HELPER_EX(zend_post_incdec_property_helper, VAR|UNUSED|CV, CONST|TMP|VAR
                        ZVAL_DUP(retval, z);
                        ZVAL_DUP(&z_copy, z);
                        incdec_op(&z_copy);
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((OP2_TYPE == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC);
                        zval_ptr_dtor(&z_copy);
                        zval_ptr_dtor(z);
index ed8a19f9cf5666f148b1a4542632adf8fa42cf00..8d7feea0253910f6ffd0b91172f8c63a1a5261a7 100644 (file)
@@ -14180,7 +14180,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_CONST(incdec_t
                                }
                                z = value;
                        }
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        SEPARATE_ZVAL_IF_NOT_REF(z);
                        incdec_op(z);
                        ZVAL_COPY_VALUE(retval, z);
@@ -14281,7 +14281,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_CONST(incdec_
                        ZVAL_DUP(retval, z);
                        ZVAL_DUP(&z_copy, z);
                        incdec_op(&z_copy);
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CONST == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC);
                        zval_ptr_dtor(&z_copy);
                        zval_ptr_dtor(z);
@@ -16616,7 +16616,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_TMP(incdec_t i
                                }
                                z = value;
                        }
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        SEPARATE_ZVAL_IF_NOT_REF(z);
                        incdec_op(z);
                        ZVAL_COPY_VALUE(retval, z);
@@ -16717,7 +16717,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_TMP(incdec_t
                        ZVAL_DUP(retval, z);
                        ZVAL_DUP(&z_copy, z);
                        incdec_op(&z_copy);
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_TMP_VAR == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC);
                        zval_ptr_dtor(&z_copy);
                        zval_ptr_dtor(z);
@@ -18627,7 +18627,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_VAR(incdec_t i
                                }
                                z = value;
                        }
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        SEPARATE_ZVAL_IF_NOT_REF(z);
                        incdec_op(z);
                        ZVAL_COPY_VALUE(retval, z);
@@ -18728,7 +18728,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_VAR(incdec_t
                        ZVAL_DUP(retval, z);
                        ZVAL_DUP(&z_copy, z);
                        incdec_op(&z_copy);
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_VAR == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC);
                        zval_ptr_dtor(&z_copy);
                        zval_ptr_dtor(z);
@@ -22152,7 +22152,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_CV(incdec_t in
                                }
                                z = value;
                        }
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        SEPARATE_ZVAL_IF_NOT_REF(z);
                        incdec_op(z);
                        ZVAL_COPY_VALUE(retval, z);
@@ -22253,7 +22253,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_CV(incdec_t i
                        ZVAL_DUP(retval, z);
                        ZVAL_DUP(&z_copy, z);
                        incdec_op(&z_copy);
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CV == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC);
                        zval_ptr_dtor(&z_copy);
                        zval_ptr_dtor(z);
@@ -24020,7 +24020,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_CONST(incde
                                }
                                z = value;
                        }
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        SEPARATE_ZVAL_IF_NOT_REF(z);
                        incdec_op(z);
                        ZVAL_COPY_VALUE(retval, z);
@@ -24121,7 +24121,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_CONST(incd
                        ZVAL_DUP(retval, z);
                        ZVAL_DUP(&z_copy, z);
                        incdec_op(&z_copy);
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CONST == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC);
                        zval_ptr_dtor(&z_copy);
                        zval_ptr_dtor(z);
@@ -25378,7 +25378,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_TMP(incdec_
                                }
                                z = value;
                        }
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        SEPARATE_ZVAL_IF_NOT_REF(z);
                        incdec_op(z);
                        ZVAL_COPY_VALUE(retval, z);
@@ -25479,7 +25479,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_TMP(incdec
                        ZVAL_DUP(retval, z);
                        ZVAL_DUP(&z_copy, z);
                        incdec_op(&z_copy);
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_TMP_VAR == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC);
                        zval_ptr_dtor(&z_copy);
                        zval_ptr_dtor(z);
@@ -26652,7 +26652,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_VAR(incdec_
                                }
                                z = value;
                        }
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        SEPARATE_ZVAL_IF_NOT_REF(z);
                        incdec_op(z);
                        ZVAL_COPY_VALUE(retval, z);
@@ -26753,7 +26753,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_VAR(incdec
                        ZVAL_DUP(retval, z);
                        ZVAL_DUP(&z_copy, z);
                        incdec_op(&z_copy);
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_VAR == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC);
                        zval_ptr_dtor(&z_copy);
                        zval_ptr_dtor(z);
@@ -28328,7 +28328,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_CV(incdec_t
                                }
                                z = value;
                        }
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        SEPARATE_ZVAL_IF_NOT_REF(z);
                        incdec_op(z);
                        ZVAL_COPY_VALUE(retval, z);
@@ -28429,7 +28429,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_CV(incdec_
                        ZVAL_DUP(retval, z);
                        ZVAL_DUP(&z_copy, z);
                        incdec_op(&z_copy);
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CV == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC);
                        zval_ptr_dtor(&z_copy);
                        zval_ptr_dtor(z);
@@ -31079,7 +31079,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_CONST(incdec_t
                                }
                                z = value;
                        }
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        SEPARATE_ZVAL_IF_NOT_REF(z);
                        incdec_op(z);
                        ZVAL_COPY_VALUE(retval, z);
@@ -31180,7 +31180,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_CONST(incdec_t
                        ZVAL_DUP(retval, z);
                        ZVAL_DUP(&z_copy, z);
                        incdec_op(&z_copy);
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CONST == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC);
                        zval_ptr_dtor(&z_copy);
                        zval_ptr_dtor(z);
@@ -33297,7 +33297,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_TMP(incdec_t in
                                }
                                z = value;
                        }
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        SEPARATE_ZVAL_IF_NOT_REF(z);
                        incdec_op(z);
                        ZVAL_COPY_VALUE(retval, z);
@@ -33398,7 +33398,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_TMP(incdec_t i
                        ZVAL_DUP(retval, z);
                        ZVAL_DUP(&z_copy, z);
                        incdec_op(&z_copy);
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_TMP_VAR == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC);
                        zval_ptr_dtor(&z_copy);
                        zval_ptr_dtor(z);
@@ -35183,7 +35183,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_VAR(incdec_t in
                                }
                                z = value;
                        }
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        SEPARATE_ZVAL_IF_NOT_REF(z);
                        incdec_op(z);
                        ZVAL_COPY_VALUE(retval, z);
@@ -35284,7 +35284,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_VAR(incdec_t i
                        ZVAL_DUP(retval, z);
                        ZVAL_DUP(&z_copy, z);
                        incdec_op(&z_copy);
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_VAR == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC);
                        zval_ptr_dtor(&z_copy);
                        zval_ptr_dtor(z);
@@ -38452,7 +38452,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_CV(incdec_t inc
                                }
                                z = value;
                        }
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        SEPARATE_ZVAL_IF_NOT_REF(z);
                        incdec_op(z);
                        ZVAL_COPY_VALUE(retval, z);
@@ -38553,7 +38553,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_CV(incdec_t in
                        ZVAL_DUP(retval, z);
                        ZVAL_DUP(&z_copy, z);
                        incdec_op(&z_copy);
-                       Z_ADDREF_P(z);
+                       if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
                        Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CV == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC);
                        zval_ptr_dtor(&z_copy);
                        zval_ptr_dtor(z);