diff options
Diffstat (limited to 'Zend/zend_objects.c')
-rw-r--r-- | Zend/zend_objects.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/Zend/zend_objects.c b/Zend/zend_objects.c index 52b7fa9993..2756c4993d 100644 --- a/Zend/zend_objects.c +++ b/Zend/zend_objects.c @@ -1,5 +1,6 @@ #include "zend.h" #include "zend_globals.h" +#include "zend_variables.h" #define ZEND_DEBUG_OBJECTS 0 @@ -24,7 +25,7 @@ void zend_objects_destroy(zend_objects *objects) efree(objects->object_buckets); } -zend_object_value zend_objects_new(zend_object **object) +zend_object_value zend_objects_new(zend_object **object, zend_class_entry *class_type) { zend_object_handle handle; zend_object_value retval; @@ -43,7 +44,14 @@ zend_object_value zend_objects_new(zend_object **object) } EG(objects).object_buckets[handle].valid = 1; EG(objects).object_buckets[handle].bucket.obj.refcount = 1; + *object = &EG(objects).object_buckets[handle].bucket.obj.object; + + (*object)->ce = class_type; + /* Try and change ALLOC_HASHTABLE to ALLOC_HASHTABLE_REL by also fixing this function's prototype */ + ALLOC_HASHTABLE((*object)->properties); + zend_hash_init((*object)->properties, 0, NULL, ZVAL_PTR_DTOR, 0); + retval.handle = handle; retval.handlers = zoh; #if ZEND_DEBUG_OBJECTS |