diff options
author | Dmitry Stogov <dmitry@zend.com> | 2014-04-26 00:32:51 +0400 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2014-04-26 00:32:51 +0400 |
commit | f9927a6c97208c60d922f9a4e98feb8079c57d1f (patch) | |
tree | 35815b69d1bf7d47fb41e857ff8d2b024ddac153 /ext/standard/streamsfuncs.c | |
parent | 4e7cbf3f5842abe6688c11ce3cc11d2eabf0695f (diff) | |
parent | b82d077f988606580e5c06a9da18fe4f60ddb7cb (diff) | |
download | php-git-f9927a6c97208c60d922f9a4e98feb8079c57d1f.tar.gz |
Merge mainstream 'master' branch into refactoring
During merge I had to revert:
Nikita's patch for php_splice() (it probably needs to be applyed again)
Bob Weinand's patches related to constant expression handling (we need to review them carefully)
I also reverted all our attempts to support sapi/phpdbg (we didn't test it anyway)
Conflicts:
Zend/zend.h
Zend/zend_API.c
Zend/zend_ast.c
Zend/zend_compile.c
Zend/zend_compile.h
Zend/zend_constants.c
Zend/zend_exceptions.c
Zend/zend_execute.c
Zend/zend_execute.h
Zend/zend_execute_API.c
Zend/zend_hash.c
Zend/zend_highlight.c
Zend/zend_language_parser.y
Zend/zend_language_scanner.c
Zend/zend_language_scanner_defs.h
Zend/zend_variables.c
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
ext/date/php_date.c
ext/dom/documenttype.c
ext/hash/hash.c
ext/iconv/iconv.c
ext/mbstring/tests/zend_multibyte-10.phpt
ext/mbstring/tests/zend_multibyte-11.phpt
ext/mbstring/tests/zend_multibyte-12.phpt
ext/mysql/php_mysql.c
ext/mysqli/mysqli.c
ext/mysqlnd/mysqlnd_reverse_api.c
ext/mysqlnd/php_mysqlnd.c
ext/opcache/ZendAccelerator.c
ext/opcache/zend_accelerator_util_funcs.c
ext/opcache/zend_persist.c
ext/opcache/zend_persist_calc.c
ext/pcre/php_pcre.c
ext/pdo/pdo_dbh.c
ext/pdo/pdo_stmt.c
ext/pdo_pgsql/pgsql_driver.c
ext/pgsql/pgsql.c
ext/reflection/php_reflection.c
ext/session/session.c
ext/spl/spl_array.c
ext/spl/spl_observer.c
ext/standard/array.c
ext/standard/basic_functions.c
ext/standard/html.c
ext/standard/mail.c
ext/standard/php_array.h
ext/standard/proc_open.c
ext/standard/streamsfuncs.c
ext/standard/user_filters.c
ext/standard/var_unserializer.c
ext/standard/var_unserializer.re
main/php_variables.c
sapi/phpdbg/phpdbg.c
sapi/phpdbg/phpdbg_bp.c
sapi/phpdbg/phpdbg_frame.c
sapi/phpdbg/phpdbg_help.c
sapi/phpdbg/phpdbg_list.c
sapi/phpdbg/phpdbg_print.c
sapi/phpdbg/phpdbg_prompt.c
Diffstat (limited to 'ext/standard/streamsfuncs.c')
-rw-r--r-- | ext/standard/streamsfuncs.c | 31 |
1 files changed, 9 insertions, 22 deletions
diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c index c39a9f3310..71cdc13927 100644 --- a/ext/standard/streamsfuncs.c +++ b/ext/standard/streamsfuncs.c @@ -548,7 +548,6 @@ PHP_FUNCTION(stream_get_transports) { HashTable *stream_xport_hash; zend_string *stream_xport; - ulong num_key; if (zend_parse_parameters_none() == FAILURE) { return; @@ -556,7 +555,7 @@ PHP_FUNCTION(stream_get_transports) if ((stream_xport_hash = php_stream_xport_get_hash())) { array_init(return_value); - ZEND_HASH_FOREACH_KEY(stream_xport_hash, num_key, stream_xport) { + ZEND_HASH_FOREACH_STR_KEY(stream_xport_hash, stream_xport) { add_next_index_str(return_value, STR_COPY(stream_xport)); } ZEND_HASH_FOREACH_END(); } else { @@ -571,8 +570,6 @@ PHP_FUNCTION(stream_get_wrappers) { HashTable *url_stream_wrappers_hash; zend_string *stream_protocol; - int key_flags; - ulong num_key; if (zend_parse_parameters_none() == FAILURE) { return; @@ -580,8 +577,8 @@ PHP_FUNCTION(stream_get_wrappers) if ((url_stream_wrappers_hash = php_stream_get_url_stream_wrappers_hash())) { array_init(return_value); - ZEND_HASH_FOREACH_KEY(url_stream_wrappers_hash, num_key, stream_protocol) { - if (key_flags == HASH_KEY_IS_STRING) { + ZEND_HASH_FOREACH_STR_KEY(url_stream_wrappers_hash, stream_protocol) { + if (stream_protocol) { add_next_index_str(return_value, STR_COPY(stream_protocol)); } } ZEND_HASH_FOREACH_END(); @@ -607,7 +604,7 @@ static int stream_array_to_fd_set(zval *stream_array, fd_set *fds, php_socket_t /* Temporary int fd is needed for the STREAM data type on windows, passing this_fd directly to php_stream_cast() would eventually bring a wrong result on x64. php_stream_cast() casts to int internally, and this will leave the higher bits of a SOCKET variable uninitialized on systems with little endian. */ - int tmp_fd; + php_socket_t this_fd; php_stream_from_zval_no_verify(stream, elem); if (stream == NULL) { @@ -618,9 +615,7 @@ static int stream_array_to_fd_set(zval *stream_array, fd_set *fds, php_socket_t * when casting. It is only used here so that the buffered data warning * is not displayed. * */ - if (SUCCESS == php_stream_cast(stream, PHP_STREAM_AS_FD_FOR_SELECT | PHP_STREAM_CAST_INTERNAL, (void*)&tmp_fd, 1) && tmp_fd != -1) { - - php_socket_t this_fd = (php_socket_t)tmp_fd; + if (SUCCESS == php_stream_cast(stream, PHP_STREAM_AS_FD_FOR_SELECT | PHP_STREAM_CAST_INTERNAL, (void*)&this_fd, 1) && this_fd != -1) { PHP_SAFE_FD_SET(this_fd, fds); @@ -630,7 +625,6 @@ static int stream_array_to_fd_set(zval *stream_array, fd_set *fds, php_socket_t cnt++; } } ZEND_HASH_FOREACH_END(); - return cnt ? 1 : 0; } @@ -649,10 +643,7 @@ static int stream_array_from_fd_set(zval *stream_array, fd_set *fds TSRMLS_DC) zend_hash_init(Z_ARRVAL(new_array), zend_hash_num_elements(Z_ARRVAL_P(stream_array)), NULL, ZVAL_PTR_DTOR, 0); ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(stream_array), num_ind, key, elem) { - /* Temporary int fd is needed for the STREAM data type on windows, passing this_fd directly to php_stream_cast() - would eventually bring a wrong result on x64. php_stream_cast() casts to int internally, and this will leave - the higher bits of a SOCKET variable uninitialized on systems with little endian. */ - int tmp_fd; + php_socket_t this_fd; php_stream_from_zval_no_verify(stream, elem); if (stream == NULL) { @@ -663,10 +654,7 @@ static int stream_array_from_fd_set(zval *stream_array, fd_set *fds TSRMLS_DC) * when casting. It is only used here so that the buffered data warning * is not displayed. */ - if (SUCCESS == php_stream_cast(stream, PHP_STREAM_AS_FD_FOR_SELECT | PHP_STREAM_CAST_INTERNAL, (void*)&tmp_fd, 1) && tmp_fd != -1) { - - php_socket_t this_fd = (php_socket_t)tmp_fd; - + if (SUCCESS == php_stream_cast(stream, PHP_STREAM_AS_FD_FOR_SELECT | PHP_STREAM_CAST_INTERNAL, (void*)&this_fd, 1) && this_fd != SOCK_ERR) { if (PHP_SAFE_FD_ISSET(this_fd, fds)) { if (!key) { dest_elem = zend_hash_index_update(Z_ARRVAL(new_array), num_ind, elem); @@ -887,12 +875,11 @@ static int parse_context_options(php_stream_context *context, zval *options TSRM zval *wval, *oval; zend_string *wkey, *okey; int ret = SUCCESS; - ulong num_key; - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(options), num_key, wkey, wval) { + ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(options), wkey, wval) { if (wkey && Z_TYPE_P(wval) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(wval), num_key, okey, oval) { + ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(wval), okey, oval) { if (okey) { php_stream_context_set_option(context, wkey->val, okey->val, oval); } |