summaryrefslogtreecommitdiff
path: root/main/streams/filter.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2017-10-31 18:51:35 +0300
committerDmitry Stogov <dmitry@zend.com>2017-10-31 18:51:35 +0300
commitbbfd0df9d3903f1a5faa301e553de92372d70f03 (patch)
tree597ea731ee50ebe268d67e59425c2ef333831365 /main/streams/filter.c
parent5b044aacbeb481a840da9f9733dacfc3e0bf5cb7 (diff)
downloadphp-git-bbfd0df9d3903f1a5faa301e553de92372d70f03.tar.gz
Use interned strings for persistent stream wrappers and filters
Diffstat (limited to 'main/streams/filter.c')
-rw-r--r--main/streams/filter.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/main/streams/filter.c b/main/streams/filter.c
index 6014a49661..5d8fccfca7 100644
--- a/main/streams/filter.c
+++ b/main/streams/filter.c
@@ -46,7 +46,8 @@ PHPAPI HashTable *_php_get_stream_filters_hash(void)
/* API for registering GLOBAL filters */
PHPAPI int php_stream_filter_register_factory(const char *filterpattern, php_stream_filter_factory *factory)
{
- return zend_hash_str_add_ptr(&stream_filters_hash, filterpattern, strlen(filterpattern), factory) ? SUCCESS : FAILURE;
+ zend_string *str = zend_string_init_interned(filterpattern, strlen(filterpattern), 1);
+ return zend_hash_add_ptr(&stream_filters_hash, str, factory) ? SUCCESS : FAILURE;
}
PHPAPI int php_stream_filter_unregister_factory(const char *filterpattern)
@@ -55,15 +56,15 @@ PHPAPI int php_stream_filter_unregister_factory(const char *filterpattern)
}
/* API for registering VOLATILE wrappers */
-PHPAPI int php_stream_filter_register_factory_volatile(const char *filterpattern, php_stream_filter_factory *factory)
+PHPAPI int php_stream_filter_register_factory_volatile(zend_string *filterpattern, php_stream_filter_factory *factory)
{
if (!FG(stream_filters)) {
ALLOC_HASHTABLE(FG(stream_filters));
- zend_hash_init(FG(stream_filters), zend_hash_num_elements(&stream_filters_hash), NULL, NULL, 0);
+ zend_hash_init(FG(stream_filters), zend_hash_num_elements(&stream_filters_hash) + 1, NULL, NULL, 0);
zend_hash_copy(FG(stream_filters), &stream_filters_hash, NULL);
}
- return zend_hash_str_add_ptr(FG(stream_filters), (char*)filterpattern, strlen(filterpattern), factory) ? SUCCESS : FAILURE;
+ return zend_hash_add_ptr(FG(stream_filters), filterpattern, factory) ? SUCCESS : FAILURE;
}
/* Buckets */