summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorMarcus Boerger <helly@php.net>2005-03-11 00:14:02 +0000
committerMarcus Boerger <helly@php.net>2005-03-11 00:14:02 +0000
commitfaae6ac15946a0b6b0fdda46aca1f9255bd3d836 (patch)
tree56d1695ce66f02664a2f634cd7595bd6b9fbcd6a /ext
parent04a08c757a9f485ed702559252dd04fc3bbbbe7e (diff)
downloadphp-git-faae6ac15946a0b6b0fdda46aca1f9255bd3d836.tar.gz
- Do not touch return_valu's refcount or is_ref
Diffstat (limited to 'ext')
-rw-r--r--ext/standard/array.c54
1 files changed, 17 insertions, 37 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c
index 1180c9e450..2a61d4c5ea 100644
--- a/ext/standard/array.c
+++ b/ext/standard/array.c
@@ -783,8 +783,7 @@ PHP_FUNCTION(end)
RETURN_FALSE;
}
- *return_value = **entry;
- zval_copy_ctor(return_value);
+ RETURN_ZVAL(*entry, 1, 0);
}
}
/* }}} */
@@ -811,8 +810,7 @@ PHP_FUNCTION(prev)
RETURN_FALSE;
}
- *return_value = **entry;
- zval_copy_ctor(return_value);
+ RETURN_ZVAL(*entry, 1, 0);
}
}
/* }}} */
@@ -839,8 +837,7 @@ PHP_FUNCTION(next)
RETURN_FALSE;
}
- *return_value = **entry;
- zval_copy_ctor(return_value);
+ RETURN_ZVAL(*entry, 1, 0);
}
}
/* }}} */
@@ -867,8 +864,7 @@ PHP_FUNCTION(reset)
RETURN_FALSE;
}
- *return_value = **entry;
- zval_copy_ctor(return_value);
+ RETURN_ZVAL(*entry, 1, 0);
}
}
/* }}} */
@@ -891,8 +887,7 @@ PHP_FUNCTION(current)
if (zend_hash_get_current_data(target_hash, (void **) &entry) == FAILURE) {
RETURN_FALSE;
}
- *return_value = **entry;
- zval_copy_ctor(return_value);
+ RETURN_ZVAL(*entry, 1, 0);
}
/* }}} */
@@ -946,8 +941,7 @@ PHP_FUNCTION(min)
WRONG_PARAM_COUNT;
}
if (zend_hash_minmax(Z_ARRVAL_PP(arr), array_data_compare, 0, (void **) &result TSRMLS_CC) == SUCCESS) {
- *return_value = **result;
- zval_copy_ctor(return_value);
+ RETVAL_ZVAL(*result, 1, 0);
} else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Array must contain atleast one element");
RETURN_FALSE;
@@ -971,8 +965,7 @@ PHP_FUNCTION(min)
}
}
- *return_value = **min;
- zval_copy_ctor(return_value);
+ RETVAL_ZVAL(*min, 1, 0);
efree(args);
}
@@ -998,8 +991,7 @@ PHP_FUNCTION(max)
WRONG_PARAM_COUNT;
}
if (zend_hash_minmax(Z_ARRVAL_PP(arr), array_data_compare, 1, (void **) &result TSRMLS_CC) == SUCCESS) {
- *return_value = **result;
- zval_copy_ctor(return_value);
+ RETVAL_ZVAL(*result, 1, 0);
} else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Array must contain atleast one element");
RETURN_FALSE;
@@ -1023,9 +1015,7 @@ PHP_FUNCTION(max)
}
}
- *return_value = **max;
- zval_copy_ctor(return_value);
-
+ RETVAL_ZVAL(*max, 1, 0);
efree(args);
}
}
@@ -1947,9 +1937,7 @@ static void _phpi_pop(INTERNAL_FUNCTION_PARAMETERS, int off_the_end)
else
zend_hash_internal_pointer_reset(Z_ARRVAL_PP(stack));
zend_hash_get_current_data(Z_ARRVAL_PP(stack), (void **)&val);
- *return_value = **val;
- zval_copy_ctor(return_value);
- INIT_PZVAL(return_value);
+ RETVAL_ZVAL(*val, 1, 0);
/* Delete the first or last value */
zend_hash_get_current_key_ex(Z_ARRVAL_PP(stack), &key, &key_len, &index, 0, NULL);
@@ -2605,8 +2593,7 @@ PHP_FUNCTION(array_pad)
do_pad = (input_size >= pad_size_abs) ? 0 : 1;
/* Copy the original array */
- *return_value = **input;
- zval_copy_ctor(return_value);
+ RETVAL_ZVAL(*input, 1, 0);
/* If no need to pad, no need to continue */
if (!do_pad) {
@@ -2771,8 +2758,7 @@ PHP_FUNCTION(array_unique)
}
/* copy the argument array */
- *return_value = **array;
- zval_copy_ctor(return_value);
+ RETVAL_ZVAL(*array, 1, 0);
if (target_hash->nNumOfElements <= 1) { /* nothing to do */
return;
@@ -3003,8 +2989,7 @@ static void php_array_intersect(INTERNAL_FUNCTION_PARAMETERS, int behavior, int
}
/* copy the argument array */
- *return_value = **args[0];
- zval_copy_ctor(return_value);
+ RETVAL_ZVAL(*args[0], 1, 0);
if ((behavior & INTERSECT_NORMAL) && data_compare_type == INTERSECT_COMP_DATA_USER) {
/* array_uintersect() */
@@ -3384,8 +3369,7 @@ static void php_array_diff(INTERNAL_FUNCTION_PARAMETERS, int behavior, int data_
}
/* copy the argument array */
- *return_value = **args[0];
- zval_copy_ctor(return_value);
+ RETVAL_ZVAL(*args[0], 1, 0);
if (behavior == DIFF_NORMAL && data_compare_type == DIFF_COMP_DATA_USER) {
/* array_udiff() */
@@ -3966,8 +3950,7 @@ PHP_FUNCTION(array_reduce)
if (zend_hash_num_elements(htbl) == 0) {
if (result) {
- *return_value = *result;
- zval_copy_ctor(return_value);
+ RETVAL_ZVAL(result, 1, 0);
}
return;
}
@@ -4005,9 +3988,7 @@ PHP_FUNCTION(array_reduce)
zend_hash_move_forward_ex(htbl, &pos);
}
- *return_value = *result;
- zval_copy_ctor(return_value);
- zval_ptr_dtor(&result);
+ RETVAL_ZVAL(result, 0, 1);
}
/* }}} */
@@ -4164,8 +4145,7 @@ PHP_FUNCTION(array_map)
/* Short-circuit: if no callback and only one array, just return it. */
if (Z_TYPE_P(callback) == IS_NULL && ZEND_NUM_ARGS() == 2) {
- *return_value = *args[1];
- zval_copy_ctor(return_value);
+ RETVAL_ZVAL(args[1], 1, 0);
efree(array_len);
efree(array_pos);
efree(args);