mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
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.
This commit is contained in:
@@ -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 */
|
||||
|
||||
/*
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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 &&
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user