diff options
author | Anatol Belski <ab@php.net> | 2014-07-21 09:26:43 +0200 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2014-07-21 09:26:43 +0200 |
commit | 0ff7fb02e11ce6cc2dec9bc10b22e552cf747999 (patch) | |
tree | 0624f622ae7e080eb49ff1d6828bd8b45627be77 /ext/standard/string.c | |
parent | 96783bdfb79b33646dc916d4b93bc33b78d70c4c (diff) | |
parent | b131b03dc2ec4f3765e0d603b44f25c8029a3c2f (diff) | |
download | php-git-0ff7fb02e11ce6cc2dec9bc10b22e552cf747999.tar.gz |
Merge remote-tracking branch 'origin/PHP-5.6' into str_size_and_int64_56_backport
* origin/PHP-5.6: (131 commits)
Enable $ replacement in exif, ldap, pdo_pgsql and tidy
See bug #67635
NEWS
NEWS
improve previous, add message during configure
Fixed bug #67635 php links to systemd libraries without using pkg-config
Improve fix for #66608
Fixed segfault with empty break
New added opcodes don't need to be resloved
Update NEWS
Update NEWS
Update NEWS
Fixed bug #66827 Session raises E_NOTICE when session name variable is array
implemented copy libs of core exts in phpize mode
fix copy the ext dll into the prefix path in phpize mode
fix default prefix in phpize mode
fix file with zero size usage in phpize mode
Update NEWS
Fixed bug #66608 (Incorrect behavior with nested "finally" blocks)
Enable build without atoll (e.g old AIX flavours)
...
Conflicts:
Zend/zend_opcode.c
ext/date/php_date.c
ext/mysqli/mysqli.c
ext/pgsql/pgsql.c
ext/session/session.c
ext/spl/spl_array.c
ext/standard/http_fopen_wrapper.c
ext/standard/string.c
sapi/litespeed/lsapi_main.c
Diffstat (limited to 'ext/standard/string.c')
-rw-r--r-- | ext/standard/string.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/ext/standard/string.c b/ext/standard/string.c index c47b144119..60ab8e44a8 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -2737,11 +2737,12 @@ PHP_FUNCTION(lcfirst) Uppercase the first character of every word in a string */ PHP_FUNCTION(ucwords) { - char *str; + char *str, *delims = " \t\r\n\f\v"; register char *r, *r_end; - php_size_t str_len; + php_size_t str_len, delims_len = 6; + char mask[256]; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S", &str, &str_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S|S", &str, &str_len, &delims, &delims_len) == FAILURE) { return; } @@ -2749,12 +2750,14 @@ PHP_FUNCTION(ucwords) RETURN_EMPTY_STRING(); } + php_charmask((unsigned char *)delims, delims_len, mask TSRMLS_CC); + ZVAL_STRINGL(return_value, str, str_len, 1); r = Z_STRVAL_P(return_value); *r = toupper((unsigned char) *r); for (r_end = r + Z_STRSIZE_P(return_value) - 1; r < r_end; ) { - if (isspace((int) *(unsigned char *)r++)) { + if (mask[(unsigned char)*r++]) { *r = toupper((unsigned char) *r); } } @@ -3099,6 +3102,10 @@ static void php_strtr_array(zval *return_value, char *str, php_size_t slen, Hash php_size_t patterns_len; zend_llist *allocs; + if (zend_hash_num_elements(pats) == 0) { + RETURN_STRINGL(str, slen, 1); + } + S(&text) = str; L(&text) = slen; |