summaryrefslogtreecommitdiff
path: root/Zend/zend_objects.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2005-11-15 15:21:47 +0000
committerDmitry Stogov <dmitry@php.net>2005-11-15 15:21:47 +0000
commit8bb39e7dba4afef51968cb42e091afa6a48b0015 (patch)
treef5713393d637a1ca6068d6dd6c2c2f9584bbfecc /Zend/zend_objects.c
parentdffc74c54eb40957dae56f89ebd6ca4c625fedad (diff)
downloadphp-git-8bb39e7dba4afef51968cb42e091afa6a48b0015.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 c9299c4efb..a699442269 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;
}