Avoid reallocations

This commit is contained in:
Dmitry Stogov 2015-09-14 23:04:27 +03:00
parent 5c28c21159
commit 927d68db24
3 changed files with 3 additions and 9 deletions

View File

@ -168,9 +168,7 @@ ZEND_API HashTable *zend_std_get_debug_info(zval *object, int *is_temp) /* {{{ *
return zend_array_dup(Z_ARRVAL(retval));
} else if (Z_REFCOUNT(retval) <= 1) {
*is_temp = 1;
ALLOC_HASHTABLE(ht);
*ht = *Z_ARRVAL(retval);
efree_size(Z_ARR(retval), sizeof(zend_array));
ht = Z_ARR(retval);
return ht;
} else {
*is_temp = 0;

View File

@ -1275,9 +1275,7 @@ void php_mysqli_fetch_into_hash(INTERNAL_FUNCTION_PARAMETERS, int override_flags
object_and_properties_init(return_value, ce, NULL);
if (!ce->default_properties_count && !ce->__set) {
ALLOC_HASHTABLE(Z_OBJ_P(return_value)->properties);
*Z_OBJ_P(return_value)->properties = *Z_ARRVAL(dataset);
efree(Z_ARR(dataset));
Z_OBJ_P(return_value)->properties = Z_ARR(dataset);
} else {
zend_merge_properties(return_value, Z_ARRVAL(dataset));
zval_ptr_dtor(&dataset);

View File

@ -2781,9 +2781,7 @@ static void php_pgsql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, zend_long result_
ZVAL_COPY_VALUE(&dataset, return_value);
object_and_properties_init(return_value, ce, NULL);
if (!ce->default_properties_count && !ce->__set) {
ALLOC_HASHTABLE(Z_OBJ_P(return_value)->properties);
*Z_OBJ_P(return_value)->properties = *Z_ARRVAL(dataset);
efree(Z_ARR(dataset));
Z_OBJ_P(return_value)->properties = Z_ARR(dataset);
} else {
zend_merge_properties(return_value, Z_ARRVAL(dataset));
zval_ptr_dtor(&dataset);