summaryrefslogtreecommitdiff
path: root/Zend/zend_objects.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_objects.c')
-rw-r--r--Zend/zend_objects.c10
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