summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Hristov <andrey@php.net>2002-10-09 10:33:22 +0000
committerAndrey Hristov <andrey@php.net>2002-10-09 10:33:22 +0000
commit16a82f2b473c7d106e15f3f835863d87a5bbb16d (patch)
treeb6a6544777f22a46003e85a754217c1a7d045751
parent121d4d1ef005942f958ced27bdb8a6324dbc3602 (diff)
downloadphp-git-16a82f2b473c7d106e15f3f835863d87a5bbb16d.tar.gz
Returning to the old behavior of str_shuffle() a bit. Now the passed string is
left unmodified and the shuffled string is returned.
-rw-r--r--ext/standard/string.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/ext/standard/string.c b/ext/standard/string.c
index b1c5e43e4d..9f81cafade 100644
--- a/ext/standard/string.c
+++ b/ext/standard/string.c
@@ -4025,15 +4025,18 @@ static void php_string_shuffle(char *str, long len TSRMLS_DC)
Shuffles string. One permutation of all possible is created */
PHP_FUNCTION(str_shuffle)
{
- char *str;
- int str_len;
+ zval **arg;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) {
- RETURN_FALSE;
+ if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg)) {
+ WRONG_PARAM_COUNT;
}
- php_string_shuffle(str, str_len TSRMLS_CC);
- return;
+ convert_to_string_ex(arg);
+ *return_value = **arg;
+ zval_copy_ctor(return_value);
+ if (Z_STRLEN_P(return_value) > 1) {
+ php_string_shuffle(Z_STRVAL_P(return_value), Z_STRLEN_P(return_value) TSRMLS_CC);
+ }
}
/* }}} */