]> granicus.if.org Git - php/commitdiff
- Improved. No ugly copy. (Tony)
authorFelipe Pena <felipe@php.net>
Mon, 3 Aug 2009 13:26:15 +0000 (13:26 +0000)
committerFelipe Pena <felipe@php.net>
Mon, 3 Aug 2009 13:26:15 +0000 (13:26 +0000)
NEWS
ext/standard/streamsfuncs.c

diff --git a/NEWS b/NEWS
index 093e6423428e7dddc2c4cafebc8b4759bfe22665..c80b7a40712953b554a4aadecd7d8cef6640441c 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -3,7 +3,7 @@ PHP                                                                        NEWS
 ?? ??? 2009, PHP 5.2.11
 - Fixed regression in cURL extension that prevented flush of data to output
   defined as a file handle. (Ilia)
-- Fixed memory leak in stream_is_local(). (Felipe)
+- Fixed memory leak in stream_is_local(). (Felipe, Tony)
 
 - Fixed bug #49132 (posix_times returns false without error).
   (phpbugs at gunnu dot us)
index f3b333b39092c533a5b938b77fad6b6d68ae5163..979453d17f8d9d75880970e4a59afb09d84dbd56 100644 (file)
@@ -1382,32 +1382,24 @@ PHP_FUNCTION(stream_socket_enable_crypto)
 */
 PHP_FUNCTION(stream_is_local)
 {
-       zval *zstream;
+       zval **zstream;
        php_stream *stream = NULL;
        php_stream_wrapper *wrapper = NULL;
 
-       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &zstream) == FAILURE) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z", &zstream) == FAILURE) {
                RETURN_FALSE;
        }
 
-       if(Z_TYPE_P(zstream) == IS_RESOURCE) {
-               php_stream_from_zval(stream, &zstream);
+       if(Z_TYPE_PP(zstream) == IS_RESOURCE) {
+               php_stream_from_zval(stream, zstream);
                if(stream == NULL) {
                        RETURN_FALSE;
                }
                wrapper = stream->wrapper;
        } else {
-               zval *copy_tmp;
-               
-               ALLOC_ZVAL(copy_tmp);
-               *copy_tmp = *zstream;
-               zval_copy_ctor(copy_tmp);
-               INIT_PZVAL(copy_tmp);
-               convert_to_string(copy_tmp);
-               
-               wrapper = php_stream_locate_url_wrapper(Z_STRVAL_P(copy_tmp), NULL, 0 TSRMLS_CC);
+               convert_to_string_ex(zstream);
                
-               zval_ptr_dtor(&copy_tmp);
+               wrapper = php_stream_locate_url_wrapper(Z_STRVAL_PP(zstream), NULL, 0 TSRMLS_CC);
        }
 
        if(!wrapper) {