diff options
Diffstat (limited to 'main/streams/streams.c')
-rw-r--r-- | main/streams/streams.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/main/streams/streams.c b/main/streams/streams.c index 1c3a144e9b..1f82871ab3 100644 --- a/main/streams/streams.c +++ b/main/streams/streams.c @@ -1665,12 +1665,17 @@ static inline int php_stream_wrapper_scheme_validate(const char *protocol, unsig 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) |