summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorOlly Betts <olly@survex.com>2021-03-26 17:15:34 +1300
committerOlly Betts <olly@survex.com>2021-03-26 17:15:34 +1300
commitc03679acefe36a9afaa27cea8287c0cda21eac00 (patch)
treeaa82da23a86f7e7ebcf041733548eaaa049571e5 /Source
parentd87b3fb7457cdac6a0a948a0204bee8959bf2d7f (diff)
downloadswig-c03679acefe36a9afaa27cea8287c0cda21eac00.tar.gz
Improve how we allocate swig_object_wrapper
Use zend_object_alloc() and put the zend_object member last so that Zend can put object properties after it.
Diffstat (limited to 'Source')
-rw-r--r--Source/Modules/php.cxx5
1 files changed, 2 insertions, 3 deletions
diff --git a/Source/Modules/php.cxx b/Source/Modules/php.cxx
index e51496d1d..a73b82a36 100644
--- a/Source/Modules/php.cxx
+++ b/Source/Modules/php.cxx
@@ -170,9 +170,9 @@ static void print_creation_free_wrapper(int item_index) {
Printf(s_header, "/* Object Creation Method for class %s */\n",class_name);
Printf(s_header, "zend_object * %s_object_new(zend_class_entry *ce) {\n",class_name);
- Printf(s_header, " swig_object_wrapper *obj = (swig_object_wrapper *)ecalloc(1,sizeof(swig_object_wrapper) + zend_object_properties_size(ce));\n");
+ Printf(s_header, " swig_object_wrapper *obj = (swig_object_wrapper*)zend_object_alloc(sizeof(swig_object_wrapper), ce);\n");
Printf(s_header, " zend_object_std_init(&obj->std, ce);\n");
- //Printf(s_header, " object_properties_init(&obj->std, ce);\n");
+ Printf(s_header, " object_properties_init(&obj->std, ce);\n");
Printf(s_header, " %s_object_handlers.offset = XtOffsetOf(swig_object_wrapper, std);\n",class_name);
Printf(s_header, " %s_object_handlers.free_obj = %s_free_storage;\n",class_name,class_name);
Printf(s_header, " %s_object_handlers.dtor_obj = %s_destroy_object;\n",class_name,class_name);
@@ -180,7 +180,6 @@ static void print_creation_free_wrapper(int item_index) {
class_name = NULL;
class_type = NULL;
-
}
static void SwigPHP_emit_all_creation_free_wrapper() {