diff options
author | Olly Betts <olly@survex.com> | 2021-03-26 17:15:34 +1300 |
---|---|---|
committer | Olly Betts <olly@survex.com> | 2021-03-26 17:15:34 +1300 |
commit | c03679acefe36a9afaa27cea8287c0cda21eac00 (patch) | |
tree | aa82da23a86f7e7ebcf041733548eaaa049571e5 /Source | |
parent | d87b3fb7457cdac6a0a948a0204bee8959bf2d7f (diff) | |
download | swig-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.cxx | 5 |
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() { |