]> granicus.if.org Git - php/commitdiff
Add zend_object_alloc() API
authorNikita Popov <nikita.ppv@gmail.com>
Sat, 25 Nov 2017 15:07:51 +0000 (16:07 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Sat, 25 Nov 2017 16:12:37 +0000 (17:12 +0100)
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.

31 files changed:
Zend/zend_objects_API.h
ext/date/php_date.c
ext/dom/php_dom.c
ext/fileinfo/fileinfo.c
ext/hash/hash.c
ext/intl/collator/collator_class.c
ext/intl/converter/converter.c
ext/intl/dateformat/dateformat_class.c
ext/intl/formatter/formatter_class.c
ext/intl/msgformat/msgformat_class.c
ext/intl/resourcebundle/resourcebundle_class.c
ext/intl/spoofchecker/spoofchecker_class.c
ext/intl/transliterator/transliterator_class.c
ext/mysqli/mysqli.c
ext/pdo/pdo_dbh.c
ext/pdo/pdo_stmt.c
ext/reflection/php_reflection.c
ext/simplexml/simplexml.c
ext/snmp/snmp.c
ext/spl/spl_array.c
ext/spl/spl_directory.c
ext/spl/spl_dllist.c
ext/spl/spl_fixedarray.c
ext/spl/spl_heap.c
ext/spl/spl_iterators.c
ext/sqlite3/sqlite3.c
ext/tidy/tidy.c
ext/xmlreader/php_xmlreader.c
ext/xmlwriter/php_xmlwriter.c
ext/xsl/php_xsl.c
ext/zip/php_zip.c

index c21d1a3b0a02717768fa9a624a67c111c5da59a8..cffd9ee273c308ca19680df4c53fd657e0a9ca8e 100644 (file)
@@ -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 */
 
 /*
index 6c26dfade3b467d74ba6c16a2b7d1aadbe824c03..b3f409f5f178f4796f2d962ee75069fc4d30db6f 100644 (file)
@@ -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) {
index 8fdf6aa6e0b7de3658a78511c45ca69f6a11e794..109f7c127a635bc0718762d4e6d1a8a6a8e4f8e3 100644 (file)
@@ -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);
 
index dcc8964635e778ced6a3fd42bdffe5e0b95eb826..9fbf51087d1df7a419bc14b809d2946a09702d41 100644 (file)
@@ -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);
index d8e95ea1a0e35d101a4ea79ab705ec10518469de..c7c457945e5f35e3febe0b71e5c8f10939a3a898 100644 (file)
@@ -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;
index d77a3432b87356399053c80b19ce7f64aa6524c9..fd2a616febdade11dbc9b1b1e3c10c1777c26cd3 100644 (file)
@@ -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);
index b893b8fd0ae02746f14e498cbd02b81ae6f498f1..bab4bb98815a9d33e4c2f342fbd4f8432165f362 100644 (file)
@@ -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;
index 572a3b37d52e80621b44e4b0886ea8a50e05aed0..378c5a8be12563ebc1a2daa03b53f8a86144f9de 100644 (file)
@@ -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;
index ef54de9418aed6615c68f732de23c46c4d61d87a..d15311201e2153a120495d1c02d125cd38023bd3 100644 (file)
@@ -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);
index 954dcfd3fd76e3d4c5f60eef952363665535da5a..aa7b839904b2ad3c3ca3bcce0b62d654269d2072 100644 (file)
@@ -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);
index f9d4bb16ca90193234d6e792e3aaea22e0a90fb4..3850a3b22e9a6a7893451458264f37f883f11ee5 100644 (file)
@@ -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);
index ab41a00490762327e399438c13312c919d8a70a0..8b4274d374bc6ec1fe304c589879d4af768e4ce3 100644 (file)
@@ -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);
index 9eb2304c5ec1aca54554bbf07d5cbe55771baa8d..ca174e2e706236f98140671bc98d476d858e5ab3 100644 (file)
@@ -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 );
index 58d55fe3011d25dc4d554c24fcf6190844c343bc..c8d8bd44f55f6d39b6ca42cb525e015f8af04cb5 100644 (file)
@@ -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 &&
index bfb65f48e2527b5cc4c6218700e42394657a2fbd..57659967fcdb8b92d350edecd9061e2fdd70f140 100644 (file)
@@ -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);
index c1c1b01ba541244f788ef39b76e0306ab83e1073..33f99b425a06c8db5e572966d61cddc6579df277 100644 (file)
@@ -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);
 
index 749c7e7656d01ccad07d47cba2ed1bd89b1d5eab..d6b6d9718ec7f9edc2befdb042e70755a59425fe 100644 (file)
@@ -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);
index a3defee4db414afe2901fcbb13508071b0407b7a..ece2d0020cdf1d43fe4b6d0f4b979f7f99f74c67 100644 (file)
@@ -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;
index a622dd05747dc419b29ba8469581809f595c3388..d180a73a462a44e736a2223061045c69e264243a 100644 (file)
@@ -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);
index a9645ec61dfafec895fd68a6b82050aa6fb1d6c1..4e7faa404aee6b0733ea4e8a02d0b18aacfd2978 100644 (file)
@@ -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);
index 943b5174a2eb5708de94ff1d3981e2b5c9d55efe..c320e9c110bc70ac1cdc862fe10f51bcdf1d231b 100644 (file)
@@ -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;
index 1f594293cd6fad4af1f741b8a45c5093115e8cf5..7b2f677d8156003b5d07cff36222e7ace2e4a362 100644 (file)
@@ -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);
index 20fe02fd744297915bbe82335ed0b242f91411ab..cd2f2ac123d7494de0a3706be9322ed8b2e297cc 100644 (file)
@@ -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);
index 5fecbfd2909c8cd2d46344e2e3fdc0ccad469175..38ce4c624172fe98a7c4de3dac7d666f4ba27baa 100644 (file)
@@ -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);
index da4af5a726cd649216c13225b9c36e1b3eca9da6..7d33aac3222e0a542592cb76768867ba4d1897cf 100644 (file)
@@ -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);
index 1b8f8e6e5f554184580117160190d8292799f31d..54fa24387d14c2702078eb87d9f0740cf83ed682 100644 (file)
@@ -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);
index 6a3270c9cb267ef0cd476beb9f61b2a1b495f0a6..895a8152d9d64ce0fd4baab5fccc3412a98bfacb 100644 (file)
@@ -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);
 
index 392d9b19c36b881ca07169d4cdd3b7b0a7c48018..fbec784557a912d9c1eaa191ae538d7e7cfcd24a 100644 (file)
@@ -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;
index d7304fe54819a35497852762f05fb22c4ec48569..3297351571d96acd679d9232166a97332679a66d 100644 (file)
@@ -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;
index 61afc3609922f63e0abce856e41d575a3144894b..52b5c9c7d861a4c5d9de9d3cc89d3570e68bd773 100644 (file)
@@ -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);
index b3d72678e3c0c1cf08d9435a8c2ac0d449547fa0..c20a059467acf107c8b90fcceaa7d5fb717f03e3 100644 (file)
@@ -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);