zend_string *str = zend_string_init(key, key_len, 1);
zend_resource *ret = zend_register_persistent_resource_ex(str, rsrc_pointer, rsrc_type);
- if (UNEXPECTED(ret == NULL)) {
- free(str);
- }
-
+ zend_string_release(str);
return ret;
}
/* API for registering GLOBAL filters */
PHPAPI int php_stream_filter_register_factory(const char *filterpattern, php_stream_filter_factory *factory)
{
+ int ret;
zend_string *str = zend_string_init_interned(filterpattern, strlen(filterpattern), 1);
- return zend_hash_add_ptr(&stream_filters_hash, str, factory) ? SUCCESS : FAILURE;
+ ret = zend_hash_add_ptr(&stream_filters_hash, str, factory) ? SUCCESS : FAILURE;
+ zend_string_release(str);
+ return ret;
}
PHPAPI int php_stream_filter_unregister_factory(const char *filterpattern)
PHPAPI int php_register_url_stream_wrapper(const char *protocol, php_stream_wrapper *wrapper)
{
unsigned int protocol_len = (unsigned int)strlen(protocol);
+ int ret;
+ zend_string *str;
if (php_stream_wrapper_scheme_validate(protocol, protocol_len) == FAILURE) {
return FAILURE;
}
- return zend_hash_add_ptr(&url_stream_wrappers_hash, zend_string_init_interned(protocol, protocol_len, 1), wrapper) ? SUCCESS : FAILURE;
+ str = zend_string_init_interned(protocol, protocol_len, 1);
+ ret = zend_hash_add_ptr(&url_stream_wrappers_hash, str, wrapper) ? SUCCESS : FAILURE;
+ zend_string_release(str);
+ return ret;
}
PHPAPI int php_unregister_url_stream_wrapper(const char *protocol)
PHPAPI int php_stream_xport_register(const char *protocol, php_stream_transport_factory factory)
{
- return zend_hash_update_ptr(&xport_hash, zend_string_init_interned(protocol, strlen(protocol), 1), factory) ? SUCCESS : FAILURE;
+ int ret;
+ zend_string *str = zend_string_init_interned(protocol, strlen(protocol), 1);
+
+ ret = zend_hash_update_ptr(&xport_hash, str, factory) ? SUCCESS : FAILURE;
+ zend_string_release(str);
+ return ret;
}
PHPAPI int php_stream_xport_unregister(const char *protocol)