From 7dae4000634503038bb9411c948a1f77080b301f Mon Sep 17 00:00:00 2001 From: Sara Golemon Date: Sun, 5 Jan 2003 22:24:49 +0000 Subject: [PATCH] Fixes to stream_get_wrappers() and stream_get_filters() handle hash table layouts better, plus some picune whitespace fixes --- ext/standard/file.c | 7 ++++--- ext/standard/user_filters.c | 12 +++++++++--- 2 files changed, 13 insertions(+), 6 deletions(-) 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 */ } /* }}} */ -- 2.50.1