]> granicus.if.org Git - php/commitdiff
Avoid reallocations
authorDmitry Stogov <dmitry@zend.com>
Mon, 14 Sep 2015 20:04:27 +0000 (23:04 +0300)
committerDmitry Stogov <dmitry@zend.com>
Mon, 14 Sep 2015 20:04:27 +0000 (23:04 +0300)
Zend/zend_object_handlers.c
ext/mysqli/mysqli.c
ext/pgsql/pgsql.c

index 76f950bbcf4bbd64f576cf010cc7549a47597be4..8587a82c8da13d9d2e04ce153bf6012d973d5e7a 100644 (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;
index 8039244b5c49db5b7f0005850fd03930a6c1448b..1c933d9ca42256bb2158f00fd08c5f55aec204f1 100644 (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);
index 89615080d8aa66eb0133b452b0a9788601d8dd38..e8e5a536f7407bfbd191364aca71f399a18056d7 100644 (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);