summaryrefslogtreecommitdiff
path: root/Zend/zend_objects.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2005-11-15 13:35:23 +0000
committerDmitry Stogov <dmitry@php.net>2005-11-15 13:35:23 +0000
commit64931b62cc6bed6c7397dcca826df3395258d07f (patch)
treec6add8599ba034b08a6481f28ccb9e4d0af69981 /Zend/zend_objects.c
parenta8c6b992b8894763c59276c1142971aa9a314500 (diff)
downloadphp-git-64931b62cc6bed6c7397dcca826df3395258d07f.tar.gz
Allow recursive calls to __get/__set for different properties
Diffstat (limited to 'Zend/zend_objects.c')
-rw-r--r--Zend/zend_objects.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/Zend/zend_objects.c b/Zend/zend_objects.c
index 9b5b854220..3b98ef8698 100644
--- a/Zend/zend_objects.c
+++ b/Zend/zend_objects.c
@@ -88,6 +88,10 @@ ZEND_API void zend_objects_destroy_object(zend_object *object, zend_object_handl
ZEND_API void zend_objects_free_object_storage(zend_object *object TSRMLS_DC)
{
+ if (object->guards) {
+ zend_hash_destroy(object->guards);
+ FREE_HASHTABLE(object->guards);
+ }
zend_hash_destroy(object->properties);
FREE_HASHTABLE(object->properties);
efree(object);
@@ -101,10 +105,7 @@ ZEND_API zend_object_value zend_objects_new(zend_object **object, zend_class_ent
(*object)->ce = class_type;
retval.handle = zend_objects_store_put(*object, (zend_objects_store_dtor_t) zend_objects_destroy_object, (zend_objects_free_object_storage_t) zend_objects_free_object_storage, NULL TSRMLS_CC);
retval.handlers = &std_object_handlers;
- (*object)->in_get = 0;
- (*object)->in_set = 0;
- (*object)->in_unset = 0;
- (*object)->in_isset = 0;
+ (*object)->guards = NULL;
return retval;
}