From b72b1a4e4d4a94a16b953bf8d826885efb56eeca Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sat, 25 Nov 2017 16:07:51 +0100 Subject: [PATCH] Add zend_object_alloc() API Using ecalloc() to create objects is expensive, because the dynamic-size memset() is unreasonably slow. Make sure we only zero the main object structure with known size, as the properties are intialized separately anyway. Technically we do not need to zero the embedded zend_object structure either, but as long as the memset argument is constant, a couple more bytes don't really matter. --- Zend/zend_objects_API.h | 9 +++++++++ ext/date/php_date.c | 16 ++++------------ ext/dom/php_dom.c | 4 ++-- ext/fileinfo/fileinfo.c | 2 +- ext/hash/hash.c | 6 +++--- ext/intl/collator/collator_class.c | 4 +--- ext/intl/converter/converter.c | 5 +++-- ext/intl/dateformat/dateformat_class.c | 3 +-- ext/intl/formatter/formatter_class.c | 2 +- ext/intl/msgformat/msgformat_class.c | 2 +- ext/intl/resourcebundle/resourcebundle_class.c | 2 +- ext/intl/spoofchecker/spoofchecker_class.c | 5 ++--- ext/intl/transliterator/transliterator_class.c | 5 ++--- ext/mysqli/mysqli.c | 2 +- ext/pdo/pdo_dbh.c | 2 +- ext/pdo/pdo_stmt.c | 4 ++-- ext/reflection/php_reflection.c | 5 +---- ext/simplexml/simplexml.c | 2 +- ext/snmp/snmp.c | 2 +- ext/spl/spl_array.c | 2 +- ext/spl/spl_directory.c | 2 +- ext/spl/spl_dllist.c | 2 +- ext/spl/spl_fixedarray.c | 2 +- ext/spl/spl_heap.c | 2 +- ext/spl/spl_iterators.c | 4 ++-- ext/sqlite3/sqlite3.c | 6 +++--- ext/tidy/tidy.c | 2 +- ext/xmlreader/php_xmlreader.c | 2 +- ext/xmlwriter/php_xmlwriter.c | 2 +- ext/xsl/php_xsl.c | 2 +- ext/zip/php_zip.c | 2 +- 31 files changed, 53 insertions(+), 59 deletions(-) diff --git a/Zend/zend_objects_API.h b/Zend/zend_objects_API.h index c21d1a3b0a0..cffd9ee273c 100644 --- a/Zend/zend_objects_API.h +++ b/Zend/zend_objects_API.h @@ -86,6 +86,15 @@ static zend_always_inline size_t zend_object_properties_size(zend_class_entry *c ((ce->ce_flags & ZEND_ACC_USE_GUARDS) ? 0 : 1)); } +/* Allocates object type and zeros it, but not the properties. + * Properties MUST be initialized using object_properties_init(). */ +static zend_always_inline void *zend_object_alloc(size_t obj_size, zend_class_entry *ce) { + void *obj = emalloc(obj_size + zend_object_properties_size(ce)); + memset(obj, 0, obj_size); + return obj; +} + + #endif /* ZEND_OBJECTS_H */ /* diff --git a/ext/date/php_date.c b/ext/date/php_date.c index 6c26dfade3b..b3f409f5f17 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -2187,9 +2187,7 @@ static void date_register_classes(void) /* {{{ */ static inline zend_object *date_object_new_date_ex(zend_class_entry *class_type, int init_props) /* {{{ */ { - php_date_obj *intern; - - intern = ecalloc(1, sizeof(php_date_obj) + zend_object_properties_size(class_type)); + php_date_obj *intern = zend_object_alloc(sizeof(php_date_obj), class_type); zend_object_std_init(&intern->std, class_type); if (init_props) { @@ -2318,9 +2316,7 @@ static HashTable *date_object_get_properties(zval *object) /* {{{ */ static inline zend_object *date_object_new_timezone_ex(zend_class_entry *class_type, int init_props) /* {{{ */ { - php_timezone_obj *intern; - - intern = ecalloc(1, sizeof(php_timezone_obj) + zend_object_properties_size(class_type)); + php_timezone_obj *intern = zend_object_alloc(sizeof(php_timezone_obj), class_type); zend_object_std_init(&intern->std, class_type); if (init_props) { @@ -2409,9 +2405,7 @@ static HashTable *date_object_get_properties_timezone(zval *object) /* {{{ */ static inline zend_object *date_object_new_interval_ex(zend_class_entry *class_type, int init_props) /* {{{ */ { - php_interval_obj *intern; - - intern = ecalloc(1, sizeof(php_interval_obj) + zend_object_properties_size(class_type)); + php_interval_obj *intern = zend_object_alloc(sizeof(php_interval_obj), class_type); zend_object_std_init(&intern->std, class_type); if (init_props) { @@ -2495,9 +2489,7 @@ static HashTable *date_object_get_properties_interval(zval *object) /* {{{ */ static inline zend_object *date_object_new_period_ex(zend_class_entry *class_type, int init_props) /* {{{ */ { - php_period_obj *intern; - - intern = ecalloc(1, sizeof(php_period_obj) + zend_object_properties_size(class_type)); + php_period_obj *intern = zend_object_alloc(sizeof(php_period_obj), class_type); zend_object_std_init(&intern->std, class_type); if (init_props) { diff --git a/ext/dom/php_dom.c b/ext/dom/php_dom.c index 8fdf6aa6e0b..109f7c127a6 100644 --- a/ext/dom/php_dom.c +++ b/ext/dom/php_dom.c @@ -1075,7 +1075,7 @@ void dom_namednode_iter(dom_object *basenode, int ntype, dom_object *intern, xml static dom_object* dom_objects_set_class(zend_class_entry *class_type, zend_bool hash_copy) /* {{{ */ { - dom_object *intern = ecalloc(1, sizeof(dom_object) + zend_object_properties_size(class_type)); + dom_object *intern = zend_object_alloc(sizeof(dom_object), class_type); zend_class_entry *base_class = class_type; while ((base_class->type != ZEND_INTERNAL_CLASS || base_class->info.internal.module->module_number != dom_module_entry.module_number) && base_class->parent != NULL) { @@ -1106,7 +1106,7 @@ zend_object *dom_objects_new(zend_class_entry *class_type) /* {{{ zend_object dom_xpath_objects_new(zend_class_entry *class_type) */ zend_object *dom_xpath_objects_new(zend_class_entry *class_type) { - dom_xpath_object *intern = ecalloc(1, sizeof(dom_xpath_object) + zend_object_properties_size(class_type)); + dom_xpath_object *intern = zend_object_alloc(sizeof(dom_xpath_object), class_type); intern->registered_phpfunctions = zend_new_array(0); diff --git a/ext/fileinfo/fileinfo.c b/ext/fileinfo/fileinfo.c index dcc8964635e..9fbf51087d1 100644 --- a/ext/fileinfo/fileinfo.c +++ b/ext/fileinfo/fileinfo.c @@ -100,7 +100,7 @@ PHP_FILEINFO_API zend_object *finfo_objects_new(zend_class_entry *class_type) { finfo_object *intern; - intern = ecalloc(1, sizeof(finfo_object) + zend_object_properties_size(class_type)); + intern = zend_object_alloc(sizeof(finfo_object), class_type); zend_object_std_init(&intern->zo, class_type); object_properties_init(&intern->zo, class_type); diff --git a/ext/hash/hash.c b/ext/hash/hash.c index d8e95ea1a0e..c7c457945e5 100644 --- a/ext/hash/hash.c +++ b/ext/hash/hash.c @@ -1106,11 +1106,11 @@ PHP_FUNCTION(mhash_keygen_s2k) /* {{{ php_hashcontext_create */ static zend_object* php_hashcontext_create(zend_class_entry *ce) { - php_hashcontext_object *objval = ecalloc(1, - sizeof(php_hashcontext_object) + zend_object_properties_size(ce)); - zend_object *zobj = &(objval->std); + php_hashcontext_object *objval = zend_object_alloc(sizeof(php_hashcontext_object), ce); + zend_object *zobj = &objval->std; zend_object_std_init(zobj, ce); + object_properties_init(zobj, ce); zobj->handlers = &php_hashcontext_handlers; return zobj; diff --git a/ext/intl/collator/collator_class.c b/ext/intl/collator/collator_class.c index d77a3432b87..fd2a616febd 100644 --- a/ext/intl/collator/collator_class.c +++ b/ext/intl/collator/collator_class.c @@ -49,9 +49,7 @@ void Collator_objects_free(zend_object *object ) /* {{{ Collator_object_create */ zend_object *Collator_object_create(zend_class_entry *ce ) { - Collator_object* intern; - - intern = ecalloc(1, sizeof(Collator_object) + zend_object_properties_size(ce)); + Collator_object *intern = zend_object_alloc(sizeof(Collator_object), ce); intl_error_init(COLLATOR_ERROR_P(intern)); zend_object_std_init(&intern->zo, ce ); object_properties_init(&intern->zo, ce); diff --git a/ext/intl/converter/converter.c b/ext/intl/converter/converter.c index b893b8fd0ae..bab4bb98815 100644 --- a/ext/intl/converter/converter.c +++ b/ext/intl/converter/converter.c @@ -1018,9 +1018,10 @@ static void php_converter_dtor_object(zend_object *obj) { static zend_object *php_converter_object_ctor(zend_class_entry *ce, php_converter_object **pobjval) { php_converter_object *objval; - objval = ecalloc(1, sizeof(php_converter_object) + zend_object_properties_size(ce)); + objval = zend_object_alloc(sizeof(php_converter_object), ce); - zend_object_std_init(&objval->obj, ce ); + zend_object_std_init(&objval->obj, ce); + object_properties_init(&objval->obj, ce); intl_error_init(&(objval->error)); objval->obj.handlers = &php_converter_object_handlers; diff --git a/ext/intl/dateformat/dateformat_class.c b/ext/intl/dateformat/dateformat_class.c index 572a3b37d52..378c5a8be12 100644 --- a/ext/intl/dateformat/dateformat_class.c +++ b/ext/intl/dateformat/dateformat_class.c @@ -61,7 +61,7 @@ zend_object *IntlDateFormatter_object_create(zend_class_entry *ce) { IntlDateFormatter_object* intern; - intern = ecalloc( 1, sizeof(IntlDateFormatter_object) + zend_object_properties_size(ce)); + intern = zend_object_alloc(sizeof(IntlDateFormatter_object), ce); dateformat_data_init( &intern->datef_data ); zend_object_std_init( &intern->zo, ce ); object_properties_init(&intern->zo, ce); @@ -70,7 +70,6 @@ zend_object *IntlDateFormatter_object_create(zend_class_entry *ce) intern->calendar = -1; intern->requested_locale = NULL; - intern->zo.handlers = &IntlDateFormatter_handlers; return &intern->zo; diff --git a/ext/intl/formatter/formatter_class.c b/ext/intl/formatter/formatter_class.c index ef54de9418a..d15311201e2 100644 --- a/ext/intl/formatter/formatter_class.c +++ b/ext/intl/formatter/formatter_class.c @@ -49,7 +49,7 @@ zend_object *NumberFormatter_object_create(zend_class_entry *ce) { NumberFormatter_object* intern; - intern = ecalloc( 1, sizeof(NumberFormatter_object) + zend_object_properties_size(ce)); + intern = zend_object_alloc(sizeof(NumberFormatter_object), ce); formatter_data_init( &intern->nf_data ); zend_object_std_init( &intern->zo, ce ); object_properties_init(&intern->zo, ce); diff --git a/ext/intl/msgformat/msgformat_class.c b/ext/intl/msgformat/msgformat_class.c index 954dcfd3fd7..aa7b839904b 100644 --- a/ext/intl/msgformat/msgformat_class.c +++ b/ext/intl/msgformat/msgformat_class.c @@ -49,7 +49,7 @@ zend_object *MessageFormatter_object_create(zend_class_entry *ce) { MessageFormatter_object* intern; - intern = ecalloc( 1, sizeof(MessageFormatter_object) + zend_object_properties_size(ce)); + intern = zend_object_alloc(sizeof(MessageFormatter_object), ce); msgformat_data_init( &intern->mf_data ); zend_object_std_init( &intern->zo, ce ); object_properties_init(&intern->zo, ce); diff --git a/ext/intl/resourcebundle/resourcebundle_class.c b/ext/intl/resourcebundle/resourcebundle_class.c index f9d4bb16ca9..3850a3b22e9 100644 --- a/ext/intl/resourcebundle/resourcebundle_class.c +++ b/ext/intl/resourcebundle/resourcebundle_class.c @@ -57,7 +57,7 @@ static zend_object *ResourceBundle_object_create( zend_class_entry *ce ) { ResourceBundle_object *rb; - rb = ecalloc( 1, sizeof(ResourceBundle_object) + zend_object_properties_size(ce)); + rb = zend_object_alloc(sizeof(ResourceBundle_object), ce); zend_object_std_init( &rb->zend, ce ); object_properties_init( &rb->zend, ce); diff --git a/ext/intl/spoofchecker/spoofchecker_class.c b/ext/intl/spoofchecker/spoofchecker_class.c index ab41a004907..8b4274d374b 100644 --- a/ext/intl/spoofchecker/spoofchecker_class.c +++ b/ext/intl/spoofchecker/spoofchecker_class.c @@ -41,12 +41,11 @@ void Spoofchecker_objects_free(zend_object *object) /* }}} */ /* {{{ Spoofchecker_object_create */ -zend_object *Spoofchecker_object_create( - zend_class_entry *ce) +zend_object *Spoofchecker_object_create(zend_class_entry *ce) { Spoofchecker_object* intern; - intern = ecalloc(1, sizeof(Spoofchecker_object) + zend_object_properties_size(ce)); + intern = zend_object_alloc(sizeof(Spoofchecker_object), ce); intl_error_init(SPOOFCHECKER_ERROR_P(intern)); zend_object_std_init(&intern->zo, ce); object_properties_init(&intern->zo, ce); diff --git a/ext/intl/transliterator/transliterator_class.c b/ext/intl/transliterator/transliterator_class.c index 9eb2304c5ec..ca174e2e706 100644 --- a/ext/intl/transliterator/transliterator_class.c +++ b/ext/intl/transliterator/transliterator_class.c @@ -109,12 +109,11 @@ static void Transliterator_objects_free( zend_object *object ) /* }}} */ /* {{{ Transliterator_object_create */ -static zend_object *Transliterator_object_create( - zend_class_entry *ce ) +static zend_object *Transliterator_object_create( zend_class_entry *ce ) { Transliterator_object* intern; - intern = ecalloc( 1, sizeof( Transliterator_object ) + zend_object_properties_size(ce)); + intern = zend_object_alloc(sizeof(Transliterator_object), ce); zend_object_std_init( &intern->zo, ce ); object_properties_init( &intern->zo, ce ); diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c index 58d55fe3011..c8d8bd44f55 100644 --- a/ext/mysqli/mysqli.c +++ b/ext/mysqli/mysqli.c @@ -448,7 +448,7 @@ PHP_MYSQLI_EXPORT(zend_object *) mysqli_objects_new(zend_class_entry *class_type zend_class_entry *mysqli_base_class; zend_object_handlers *handlers; - intern = ecalloc(1, sizeof(mysqli_object) + zend_object_properties_size(class_type)); + intern = zend_object_alloc(sizeof(mysqli_object), class_type); mysqli_base_class = class_type; while (mysqli_base_class->type != ZEND_INTERNAL_CLASS && diff --git a/ext/pdo/pdo_dbh.c b/ext/pdo/pdo_dbh.c index bfb65f48e25..57659967fcd 100644 --- a/ext/pdo/pdo_dbh.c +++ b/ext/pdo/pdo_dbh.c @@ -1554,7 +1554,7 @@ zend_object *pdo_dbh_new(zend_class_entry *ce) { pdo_dbh_object_t *dbh; - dbh = ecalloc(1, sizeof(pdo_dbh_object_t) + zend_object_properties_size(ce)); + dbh = zend_object_alloc(sizeof(pdo_dbh_object_t), ce); zend_object_std_init(&dbh->std, ce); object_properties_init(&dbh->std, ce); rebuild_object_properties(&dbh->std); diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c index c1c1b01ba54..33f99b425a0 100644 --- a/ext/pdo/pdo_stmt.c +++ b/ext/pdo/pdo_stmt.c @@ -2267,7 +2267,7 @@ static zend_object *dbstmt_clone_obj(zval *zobject) pdo_stmt_t *stmt; pdo_stmt_t *old_stmt; - stmt = ecalloc(1, sizeof(pdo_stmt_t) + zend_object_properties_size(Z_OBJCE_P(zobject))); + stmt = zend_object_alloc(sizeof(pdo_stmt_t), Z_OBJCE_P(zobject)); zend_object_std_init(&stmt->std, Z_OBJCE_P(zobject)); object_properties_init(&stmt->std, Z_OBJCE_P(zobject)); @@ -2375,7 +2375,7 @@ zend_object *pdo_dbstmt_new(zend_class_entry *ce) { pdo_stmt_t *stmt; - stmt = ecalloc(1, sizeof(pdo_stmt_t) + zend_object_properties_size(ce)); + stmt = zend_object_alloc(sizeof(pdo_stmt_t), ce); zend_object_std_init(&stmt->std, ce); object_properties_init(&stmt->std, ce); diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index 749c7e7656d..d6b6d9718ec 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -270,10 +270,7 @@ static HashTable *reflection_get_gc(zval *obj, zval **gc_data, int *gc_data_coun static zend_object *reflection_objects_new(zend_class_entry *class_type) /* {{{ */ { - reflection_object *intern; - - intern = ecalloc(1, sizeof(reflection_object) + zend_object_properties_size(class_type)); - intern->zo.ce = class_type; + reflection_object *intern = zend_object_alloc(sizeof(reflection_object), class_type); zend_object_std_init(&intern->zo, class_type); object_properties_init(&intern->zo, class_type); diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c index a3defee4db4..ece2d0020cd 100644 --- a/ext/simplexml/simplexml.c +++ b/ext/simplexml/simplexml.c @@ -2166,7 +2166,7 @@ static php_sxe_object* php_sxe_object_new(zend_class_entry *ce, zend_function *f { php_sxe_object *intern; - intern = ecalloc(1, sizeof(php_sxe_object) + zend_object_properties_size(ce)); + intern = zend_object_alloc(sizeof(php_sxe_object), ce); intern->iter.type = SXE_ITER_NONE; intern->iter.nsprefix = NULL; diff --git a/ext/snmp/snmp.c b/ext/snmp/snmp.c index a622dd05747..d180a73a462 100644 --- a/ext/snmp/snmp.c +++ b/ext/snmp/snmp.c @@ -475,7 +475,7 @@ static zend_object *php_snmp_object_new(zend_class_entry *class_type) /* {{{ */ php_snmp_object *intern; /* Allocate memory for it */ - intern = ecalloc(1, sizeof(php_snmp_object) + zend_object_properties_size(class_type)); + intern = zend_object_alloc(sizeof(php_snmp_object), class_type); zend_object_std_init(&intern->zo, class_type); object_properties_init(&intern->zo, class_type); diff --git a/ext/spl/spl_array.c b/ext/spl/spl_array.c index a9645ec61df..4e7faa404ae 100644 --- a/ext/spl/spl_array.c +++ b/ext/spl/spl_array.c @@ -173,7 +173,7 @@ static zend_object *spl_array_object_new_ex(zend_class_entry *class_type, zval * zend_class_entry *parent = class_type; int inherited = 0; - intern = ecalloc(1, sizeof(spl_array_object) + zend_object_properties_size(parent)); + intern = zend_object_alloc(sizeof(spl_array_object), parent); zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c index 943b5174a2e..c320e9c110b 100644 --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@ -157,7 +157,7 @@ static zend_object *spl_filesystem_object_new_ex(zend_class_entry *class_type) { spl_filesystem_object *intern; - intern = ecalloc(1, sizeof(spl_filesystem_object) + zend_object_properties_size(class_type)); + intern = zend_object_alloc(sizeof(spl_filesystem_object), class_type); /* intern->type = SPL_FS_INFO; done by set 0 */ intern->file_class = spl_ce_SplFileObject; intern->info_class = spl_ce_SplFileInfo; diff --git a/ext/spl/spl_dllist.c b/ext/spl/spl_dllist.c index 1f594293cd6..7b2f677d815 100644 --- a/ext/spl/spl_dllist.c +++ b/ext/spl/spl_dllist.c @@ -373,7 +373,7 @@ static zend_object *spl_dllist_object_new_ex(zend_class_entry *class_type, zval zend_class_entry *parent = class_type; int inherited = 0; - intern = ecalloc(1, sizeof(spl_dllist_object) + zend_object_properties_size(parent)); + intern = zend_object_alloc(sizeof(spl_dllist_object), parent); zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); diff --git a/ext/spl/spl_fixedarray.c b/ext/spl/spl_fixedarray.c index 20fe02fd744..cd2f2ac123d 100644 --- a/ext/spl/spl_fixedarray.c +++ b/ext/spl/spl_fixedarray.c @@ -210,7 +210,7 @@ static zend_object *spl_fixedarray_object_new_ex(zend_class_entry *class_type, z zend_class_entry *parent = class_type; int inherited = 0; - intern = ecalloc(1, sizeof(spl_fixedarray_object) + zend_object_properties_size(parent)); + intern = zend_object_alloc(sizeof(spl_fixedarray_object), parent); zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); diff --git a/ext/spl/spl_heap.c b/ext/spl/spl_heap.c index 5fecbfd2909..38ce4c62417 100644 --- a/ext/spl/spl_heap.c +++ b/ext/spl/spl_heap.c @@ -363,7 +363,7 @@ static zend_object *spl_heap_object_new_ex(zend_class_entry *class_type, zval *o zend_class_entry *parent = class_type; int inherited = 0; - intern = ecalloc(1, sizeof(spl_heap_object) + zend_object_properties_size(parent)); + intern = zend_object_alloc(sizeof(spl_heap_object), parent); zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); diff --git a/ext/spl/spl_iterators.c b/ext/spl/spl_iterators.c index da4af5a726c..7d33aac3222 100644 --- a/ext/spl/spl_iterators.c +++ b/ext/spl/spl_iterators.c @@ -961,7 +961,7 @@ static zend_object *spl_RecursiveIteratorIterator_new_ex(zend_class_entry *class { spl_recursive_it_object *intern; - intern = ecalloc(1, sizeof(spl_recursive_it_object) + zend_object_properties_size(class_type)); + intern = zend_object_alloc(sizeof(spl_recursive_it_object), class_type); if (init_prefix) { smart_str_appendl(&intern->prefix[0], "", 0); @@ -2360,7 +2360,7 @@ static zend_object *spl_dual_it_new(zend_class_entry *class_type) { spl_dual_it_object *intern; - intern = ecalloc(1, sizeof(spl_dual_it_object) + zend_object_properties_size(class_type)); + intern = zend_object_alloc(sizeof(spl_dual_it_object), class_type); intern->dit_type = DIT_Unknown; zend_object_std_init(&intern->std, class_type); diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c index 1b8f8e6e5f5..54fa24387d1 100644 --- a/ext/sqlite3/sqlite3.c +++ b/ext/sqlite3/sqlite3.c @@ -2204,7 +2204,7 @@ static zend_object *php_sqlite3_object_new(zend_class_entry *class_type) /* {{{ php_sqlite3_db_object *intern; /* Allocate memory for it */ - intern = ecalloc(1, sizeof(php_sqlite3_db_object) + zend_object_properties_size(class_type)); + intern = zend_object_alloc(sizeof(php_sqlite3_db_object), class_type); /* Need to keep track of things to free */ zend_llist_init(&(intern->free_list), sizeof(php_sqlite3_free_list *), (llist_dtor_func_t)php_sqlite3_free_list_dtor, 0); @@ -2223,7 +2223,7 @@ static zend_object *php_sqlite3_stmt_object_new(zend_class_entry *class_type) /* php_sqlite3_stmt *intern; /* Allocate memory for it */ - intern = ecalloc(1, sizeof(php_sqlite3_stmt) + zend_object_properties_size(class_type)); + intern = zend_object_alloc(sizeof(php_sqlite3_stmt), class_type); zend_object_std_init(&intern->zo, class_type); object_properties_init(&intern->zo, class_type); @@ -2239,7 +2239,7 @@ static zend_object *php_sqlite3_result_object_new(zend_class_entry *class_type) php_sqlite3_result *intern; /* Allocate memory for it */ - intern = ecalloc(1, sizeof(php_sqlite3_result) + zend_object_properties_size(class_type)); + intern = zend_object_alloc(sizeof(php_sqlite3_result), class_type); zend_object_std_init(&intern->zo, class_type); object_properties_init(&intern->zo, class_type); diff --git a/ext/tidy/tidy.c b/ext/tidy/tidy.c index 6a3270c9cb2..895a8152d9d 100644 --- a/ext/tidy/tidy.c +++ b/ext/tidy/tidy.c @@ -685,7 +685,7 @@ static zend_object *tidy_object_new(zend_class_entry *class_type, zend_object_ha { PHPTidyObj *intern; - intern = ecalloc(1, sizeof(PHPTidyObj) + zend_object_properties_size(class_type)); + intern = zend_object_alloc(sizeof(PHPTidyObj), class_type); zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); diff --git a/ext/xmlreader/php_xmlreader.c b/ext/xmlreader/php_xmlreader.c index 392d9b19c36..fbec784557a 100644 --- a/ext/xmlreader/php_xmlreader.c +++ b/ext/xmlreader/php_xmlreader.c @@ -389,7 +389,7 @@ zend_object *xmlreader_objects_new(zend_class_entry *class_type) { xmlreader_object *intern; - intern = ecalloc(1, sizeof(xmlreader_object) + zend_object_properties_size(class_type)); + intern = zend_object_alloc(sizeof(xmlreader_object), class_type); zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); intern->prop_handler = &xmlreader_prop_handlers; diff --git a/ext/xmlwriter/php_xmlwriter.c b/ext/xmlwriter/php_xmlwriter.c index d7304fe5481..3297351571d 100644 --- a/ext/xmlwriter/php_xmlwriter.c +++ b/ext/xmlwriter/php_xmlwriter.c @@ -141,7 +141,7 @@ static zend_object *xmlwriter_object_new(zend_class_entry *class_type) { ze_xmlwriter_object *intern; - intern = ecalloc(1, sizeof(ze_xmlwriter_object) + zend_object_properties_size(class_type)); + intern = zend_object_alloc(sizeof(ze_xmlwriter_object), class_type); zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); intern->std.handlers = &xmlwriter_object_handlers; diff --git a/ext/xsl/php_xsl.c b/ext/xsl/php_xsl.c index 61afc360992..52b5c9c7d86 100644 --- a/ext/xsl/php_xsl.c +++ b/ext/xsl/php_xsl.c @@ -108,7 +108,7 @@ zend_object *xsl_objects_new(zend_class_entry *class_type) { xsl_object *intern; - intern = ecalloc(1, sizeof(xsl_object) + zend_object_properties_size(class_type)); + intern = zend_object_alloc(sizeof(xsl_object), class_type); intern->securityPrefs = XSL_SECPREF_DEFAULT; zend_object_std_init(&intern->std, class_type); diff --git a/ext/zip/php_zip.c b/ext/zip/php_zip.c index b3d72678e3c..c20a059467a 100644 --- a/ext/zip/php_zip.c +++ b/ext/zip/php_zip.c @@ -1064,7 +1064,7 @@ static zend_object *php_zip_object_new(zend_class_entry *class_type) /* {{{ */ { ze_zip_object *intern; - intern = ecalloc(1, sizeof(ze_zip_object) + zend_object_properties_size(class_type)); + intern = zend_object_alloc(sizeof(ze_zip_object), class_type); intern->prop_handler = &zip_prop_handlers; zend_object_std_init(&intern->zo, class_type); object_properties_init(&intern->zo, class_type);