From: Dmitry Stogov Date: Thu, 4 Aug 2005 08:36:54 +0000 (+0000) Subject: Fixed clone bug in ze1_compatibilty mode X-Git-Tag: RELEASE_2_0_0~32 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=23e4102e956d383d06983eabe3d2057496f6df82;p=php Fixed clone bug in ze1_compatibilty mode --- diff --git a/Zend/zend_objects.c b/Zend/zend_objects.c index 9bd1761ee8..9b5b854220 100644 --- a/Zend/zend_objects.c +++ b/Zend/zend_objects.c @@ -115,7 +115,7 @@ ZEND_API zend_object *zend_objects_get_address(zval *zobject TSRMLS_DC) static void zval_add_ref_or_clone(zval **p) { - if (Z_TYPE_PP(p) == IS_OBJECT) { + if (Z_TYPE_PP(p) == IS_OBJECT && !PZVAL_IS_REF(*p)) { TSRMLS_FETCH(); if (Z_OBJ_HANDLER_PP(p, clone_obj) == NULL) { @@ -126,7 +126,7 @@ static void zval_add_ref_or_clone(zval **p) ALLOC_ZVAL(*p); **p = *orig; INIT_PZVAL(*p); - (*p)->value.obj = Z_OBJ_HT_PP(p)->clone_obj(*p TSRMLS_CC); + (*p)->value.obj = Z_OBJ_HT_PP(p)->clone_obj(orig TSRMLS_CC); } } else { (*p)->refcount++;