]> granicus.if.org Git - php/commitdiff
fix conditions for freeing
authorStanislav Malyshev <stas@php.net>
Wed, 29 Jun 2005 08:44:01 +0000 (08:44 +0000)
committerStanislav Malyshev <stas@php.net>
Wed, 29 Jun 2005 08:44:01 +0000 (08:44 +0000)
Zend/zend_execute.c
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 4607a4cc104c68d4f4eebb06097feb17c803ba0b..fc041a91140e44018cb5213383b6dbce30862351 100644 (file)
@@ -544,7 +544,7 @@ static inline void zend_assign_to_object(znode *result, zval **object_ptr, znode
                }
                zend_error(E_STRICT, "Implicit cloning object of class '%s' because of 'zend.ze1_compatibility_mode'", class_name);             
                value->value.obj = Z_OBJ_HANDLER_P(orig_value, clone_obj)(orig_value TSRMLS_CC);
-               if(dup) {
+               if(!dup)        {
                        efree(class_name);
                }
        } else if (value_op->op_type == IS_TMP_VAR) {
@@ -735,7 +735,7 @@ static inline void zend_assign_to_variable(znode *result, znode *op1, znode *op2
                                zval_ptr_dtor(&value);
                        }
                }
-               if (dup == SUCCESS) {
+               if (!dup) {
                        efree(class_name);
                }
        } else if (PZVAL_IS_REF(variable_ptr)) {
@@ -848,7 +848,7 @@ static inline void zend_receive(zval **variable_ptr_ptr, zval *value TSRMLS_DC)
                        zend_error(E_STRICT, "Implicit cloning object of class '%s' because of 'zend.ze1_compatibility_mode'", class_name);
                        variable_ptr->value.obj = Z_OBJ_HANDLER_P(value, clone_obj)(value TSRMLS_CC);
                }
-               if (dup) {
+               if (!dup) {
                        efree(class_name);
                }
        } else {
index 46fc909f1579f96a11654cb91deb1032c885ae01..40608816d9425d609e939e8d310fac2b30fa1543 100644 (file)
@@ -2027,7 +2027,7 @@ ZEND_VM_C_LABEL(return_by_value):
                        zend_error(E_STRICT, "Implicit cloning object of class '%s' because of 'zend.ze1_compatibility_mode'", class_name);
                        ret->value.obj = Z_OBJ_HT_P(retval_ptr)->clone_obj(retval_ptr TSRMLS_CC);
                        *EG(return_value_ptr_ptr) = ret;
-                       if (dup) {
+                       if (!dup) {
                                efree(class_name);
                        }
                } else if (!IS_OP1_TMP_FREE()) { /* Not a temp var */
index 7e2a1113caf45beb5d8719db4bca82131a343ac6..1fda00d12194b6cd53d1a38fd71e9f6acc6352bc 100644 (file)
@@ -1638,7 +1638,7 @@ return_by_value:
                        zend_error(E_STRICT, "Implicit cloning object of class '%s' because of 'zend.ze1_compatibility_mode'", class_name);
                        ret->value.obj = Z_OBJ_HT_P(retval_ptr)->clone_obj(retval_ptr TSRMLS_CC);
                        *EG(return_value_ptr_ptr) = ret;
-                       if (dup) {
+                       if (!dup) {
                                efree(class_name);
                        }
                } else if (!0) { /* Not a temp var */
@@ -4050,7 +4050,7 @@ return_by_value:
                        zend_error(E_STRICT, "Implicit cloning object of class '%s' because of 'zend.ze1_compatibility_mode'", class_name);
                        ret->value.obj = Z_OBJ_HT_P(retval_ptr)->clone_obj(retval_ptr TSRMLS_CC);
                        *EG(return_value_ptr_ptr) = ret;
-                       if (dup) {
+                       if (!dup) {
                                efree(class_name);
                        }
                } else if (!1) { /* Not a temp var */
@@ -6983,7 +6983,7 @@ return_by_value:
                        zend_error(E_STRICT, "Implicit cloning object of class '%s' because of 'zend.ze1_compatibility_mode'", class_name);
                        ret->value.obj = Z_OBJ_HT_P(retval_ptr)->clone_obj(retval_ptr TSRMLS_CC);
                        *EG(return_value_ptr_ptr) = ret;
-                       if (dup) {
+                       if (!dup) {
                                efree(class_name);
                        }
                } else if (!0) { /* Not a temp var */
@@ -19023,7 +19023,7 @@ return_by_value:
                        zend_error(E_STRICT, "Implicit cloning object of class '%s' because of 'zend.ze1_compatibility_mode'", class_name);
                        ret->value.obj = Z_OBJ_HT_P(retval_ptr)->clone_obj(retval_ptr TSRMLS_CC);
                        *EG(return_value_ptr_ptr) = ret;
-                       if (dup) {
+                       if (!dup) {
                                efree(class_name);
                        }
                } else if (!0) { /* Not a temp var */