From: Sara Golemon Date: Sun, 5 Jan 2003 22:24:49 +0000 (+0000) Subject: Fixes to stream_get_wrappers() and stream_get_filters() handle hash table layouts... X-Git-Tag: PHP_5_0_dev_before_13561_fix~448 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7dae4000634503038bb9411c948a1f77080b301f;p=php Fixes to stream_get_wrappers() and stream_get_filters() handle hash table layouts better, plus some picune whitespace fixes --- diff --git a/ext/standard/file.c b/ext/standard/file.c index 8903d2ca4d..4a6a02d542 100644 --- a/ext/standard/file.c +++ b/ext/standard/file.c @@ -633,7 +633,7 @@ PHP_FUNCTION(stream_get_wrappers) { HashTable *url_stream_wrappers_hash; char *stream_protocol; - int stream_protocol_len = 0; + int key_flags, stream_protocol_len = 0; if (ZEND_NUM_ARGS() != 0) { WRONG_PARAM_COUNT; @@ -642,9 +642,10 @@ PHP_FUNCTION(stream_get_wrappers) if (url_stream_wrappers_hash = php_stream_get_url_stream_wrappers_hash()) { array_init(return_value); for(zend_hash_internal_pointer_reset(url_stream_wrappers_hash); - zend_hash_get_current_key_ex(url_stream_wrappers_hash, &stream_protocol, &stream_protocol_len, NULL, 0, NULL) == HASH_KEY_IS_STRING; + (key_flags = zend_hash_get_current_key_ex(url_stream_wrappers_hash, &stream_protocol, &stream_protocol_len, NULL, 0, NULL)) != HASH_KEY_NON_EXISTANT; zend_hash_move_forward(url_stream_wrappers_hash)) - add_next_index_string(return_value,stream_protocol,1); + if (key_flags == HASH_KEY_IS_STRING) + add_next_index_stringl(return_value, stream_protocol, stream_protocol_len, 1); } else { RETURN_FALSE; } diff --git a/ext/standard/user_filters.c b/ext/standard/user_filters.c index 97b743899a..8302527c45 100644 --- a/ext/standard/user_filters.c +++ b/ext/standard/user_filters.c @@ -416,16 +416,22 @@ static void filter_item_dtor(struct php_user_filter_data *fdat) PHP_FUNCTION(stream_get_filters) { char *filter_name; - int filter_name_len = 0; + int key_flags, filter_name_len = 0; + + if (ZEND_NUM_ARGS() != 0) { + WRONG_PARAM_COUNT; + } array_init(return_value); if (BG(user_filter_map)) { for(zend_hash_internal_pointer_reset(BG(user_filter_map)); - zend_hash_get_current_key_ex(BG(user_filter_map), &filter_name, &filter_name_len, NULL, 0, NULL) == HASH_KEY_IS_STRING; + (key_flags = zend_hash_get_current_key_ex(BG(user_filter_map), &filter_name, &filter_name_len, NULL, 0, NULL)) != HASH_KEY_NON_EXISTANT; zend_hash_move_forward(BG(user_filter_map))) - add_next_index_string(return_value, filter_name, 1); + if (key_flags == HASH_KEY_IS_STRING) + add_next_index_stringl(return_value, filter_name, filter_name_len, 1); } + /* It's okay to return an empty array if no filters are registered */ } /* }}} */