felipe                                   Mon, 03 Aug 2009 13:16:24 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=286733

Log:
- Re-fix stream_is_local() memory leaks

Changed paths:
    U   php/php-src/branches/PHP_5_2/NEWS
    U   php/php-src/branches/PHP_5_2/ext/standard/streamsfuncs.c
    A   
php/php-src/branches/PHP_5_2/ext/standard/tests/streams/stream_is_local.phpt
    U   php/php-src/branches/PHP_5_3/NEWS
    U   php/php-src/branches/PHP_5_3/ext/standard/streamsfuncs.c
    A   
php/php-src/branches/PHP_5_3/ext/standard/tests/streams/stream_is_local.phpt
    U   php/php-src/trunk/ext/standard/streamsfuncs.c
    A   php/php-src/trunk/ext/standard/tests/streams/stream_is_local.phpt

Modified: php/php-src/branches/PHP_5_2/NEWS
===================================================================
--- php/php-src/branches/PHP_5_2/NEWS   2009-08-03 13:02:53 UTC (rev 286732)
+++ php/php-src/branches/PHP_5_2/NEWS   2009-08-03 13:16:24 UTC (rev 286733)
@@ -3,6 +3,7 @@
 ?? ??? 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 bug #49132 (posix_times returns false without error).
   (phpbugs at gunnu dot us)

Modified: php/php-src/branches/PHP_5_2/ext/standard/streamsfuncs.c
===================================================================
--- php/php-src/branches/PHP_5_2/ext/standard/streamsfuncs.c    2009-08-03 
13:02:53 UTC (rev 286732)
+++ php/php-src/branches/PHP_5_2/ext/standard/streamsfuncs.c    2009-08-03 
13:16:24 UTC (rev 286733)
@@ -1397,8 +1397,17 @@
                }
                wrapper = stream->wrapper;
        } else {
-               convert_to_string_ex(&zstream);
-               wrapper = php_stream_locate_url_wrapper(Z_STRVAL_P(zstream), 
NULL, 0 TSRMLS_CC);
+               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);
+
+               zval_ptr_dtor(&copy_tmp);
        }

        if(!wrapper) {

Added: 
php/php-src/branches/PHP_5_2/ext/standard/tests/streams/stream_is_local.phpt
===================================================================
--- 
php/php-src/branches/PHP_5_2/ext/standard/tests/streams/stream_is_local.phpt    
                            (rev 0)
+++ 
php/php-src/branches/PHP_5_2/ext/standard/tests/streams/stream_is_local.phpt    
    2009-08-03 13:16:24 UTC (rev 286733)
@@ -0,0 +1,17 @@
+--TEST--
+Testing stream_is_local()
+--FILE--
+<?php
+
+$a = 1;
+$b = $a;
+var_dump(stream_is_local($b));
+var_dump($b);
+
+var_dump(stream_is_local(fopen(__FILE__, 'r')));
+
+?>
+--EXPECT--
+bool(true)
+int(1)
+bool(true)


Property changes on: 
php/php-src/branches/PHP_5_2/ext/standard/tests/streams/stream_is_local.phpt
___________________________________________________________________
Added: svn:keywords
   + Id Rev Revision
Added: svn:eol-style
   + native

Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS   2009-08-03 13:02:53 UTC (rev 286732)
+++ php/php-src/branches/PHP_5_3/NEWS   2009-08-03 13:16:24 UTC (rev 286733)
@@ -6,6 +6,7 @@
 - Fixed open_basedir circumvention for mail.log. (Maksymilian Arciemowicz,
   Stas)
 - Fixed signature generation/validation for zip archives in ext/phar. (Greg)
+- Fixed memory leak in stream_is_local(). (Felipe)

 - Fixed bug #49132 (posix_times returns false without error).
   (phpbugs at gunnu dot us)

Modified: php/php-src/branches/PHP_5_3/ext/standard/streamsfuncs.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/standard/streamsfuncs.c    2009-08-03 
13:02:53 UTC (rev 286732)
+++ php/php-src/branches/PHP_5_3/ext/standard/streamsfuncs.c    2009-08-03 
13:16:24 UTC (rev 286733)
@@ -1463,8 +1463,17 @@
                }
                wrapper = stream->wrapper;
        } else {
-               convert_to_string_ex(&zstream);
-               wrapper = php_stream_locate_url_wrapper(Z_STRVAL_P(zstream), 
NULL, 0 TSRMLS_CC);
+               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);
+
+               zval_ptr_dtor(&copy_tmp);
        }

        if(!wrapper) {

Added: 
php/php-src/branches/PHP_5_3/ext/standard/tests/streams/stream_is_local.phpt
===================================================================
--- 
php/php-src/branches/PHP_5_3/ext/standard/tests/streams/stream_is_local.phpt    
                            (rev 0)
+++ 
php/php-src/branches/PHP_5_3/ext/standard/tests/streams/stream_is_local.phpt    
    2009-08-03 13:16:24 UTC (rev 286733)
@@ -0,0 +1,17 @@
+--TEST--
+Testing stream_is_local()
+--FILE--
+<?php
+
+$a = 1;
+$b = $a;
+var_dump(stream_is_local($b));
+var_dump($b);
+
+var_dump(stream_is_local(fopen(__FILE__, 'r')));
+
+?>
+--EXPECT--
+bool(true)
+int(1)
+bool(true)


Property changes on: 
php/php-src/branches/PHP_5_3/ext/standard/tests/streams/stream_is_local.phpt
___________________________________________________________________
Added: svn:keywords
   + Id Rev Revision
Added: svn:eol-style
   + native

Modified: php/php-src/trunk/ext/standard/streamsfuncs.c
===================================================================
--- php/php-src/trunk/ext/standard/streamsfuncs.c       2009-08-03 13:02:53 UTC 
(rev 286732)
+++ php/php-src/trunk/ext/standard/streamsfuncs.c       2009-08-03 13:16:24 UTC 
(rev 286733)
@@ -1750,8 +1750,17 @@
                }
                wrapper = stream->wrapper;
        } else {
-               convert_to_string_ex(&zstream);
-               wrapper = php_stream_locate_url_wrapper(Z_STRVAL_P(zstream), 
NULL, 0 TSRMLS_CC);
+               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);
+
+               zval_ptr_dtor(&copy_tmp);
        }

        if(!wrapper) {

Added: php/php-src/trunk/ext/standard/tests/streams/stream_is_local.phpt
===================================================================
--- php/php-src/trunk/ext/standard/tests/streams/stream_is_local.phpt           
                (rev 0)
+++ php/php-src/trunk/ext/standard/tests/streams/stream_is_local.phpt   
2009-08-03 13:16:24 UTC (rev 286733)
@@ -0,0 +1,17 @@
+--TEST--
+Testing stream_is_local()
+--FILE--
+<?php
+
+$a = 1;
+$b = $a;
+var_dump(stream_is_local($b));
+var_dump($b);
+
+var_dump(stream_is_local(fopen(__FILE__, 'r')));
+
+?>
+--EXPECT--
+bool(true)
+int(1)
+bool(true)


Property changes on: 
php/php-src/trunk/ext/standard/tests/streams/stream_is_local.phpt
___________________________________________________________________
Added: svn:keywords
   + Id Rev Revision
Added: svn:eol-style
   + native

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to