felipe                                   Mon, 03 Aug 2009 13:26:15 +0000

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

Log:
- Improved. No ugly copy. (Tony)

Changed paths:
    U   php/php-src/branches/PHP_5_2/NEWS
    U   php/php-src/branches/PHP_5_2/ext/standard/streamsfuncs.c
    U   php/php-src/branches/PHP_5_3/NEWS
    U   php/php-src/branches/PHP_5_3/ext/standard/streamsfuncs.c
    U   php/php-src/trunk/ext/standard/streamsfuncs.c

Modified: php/php-src/branches/PHP_5_2/NEWS
===================================================================
--- php/php-src/branches/PHP_5_2/NEWS   2009-08-03 13:24:35 UTC (rev 286735)
+++ php/php-src/branches/PHP_5_2/NEWS   2009-08-03 13:26:15 UTC (rev 286736)
@@ -3,7 +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 memory leak in stream_is_local(). (Felipe, Tony)

 - 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:24:35 UTC (rev 286735)
+++ php/php-src/branches/PHP_5_2/ext/standard/streamsfuncs.c    2009-08-03 
13:26:15 UTC (rev 286736)
@@ -1382,32 +1382,24 @@
 */
 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;
+               convert_to_string_ex(zstream);

-               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);
+               wrapper = php_stream_locate_url_wrapper(Z_STRVAL_PP(zstream), 
NULL, 0 TSRMLS_CC);
        }

        if(!wrapper) {

Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS   2009-08-03 13:24:35 UTC (rev 286735)
+++ php/php-src/branches/PHP_5_3/NEWS   2009-08-03 13:26:15 UTC (rev 286736)
@@ -6,7 +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 memory leak in stream_is_local(). (Felipe, Tony)

 - 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:24:35 UTC (rev 286735)
+++ php/php-src/branches/PHP_5_3/ext/standard/streamsfuncs.c    2009-08-03 
13:26:15 UTC (rev 286736)
@@ -1448,32 +1448,24 @@
 */
 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;
+               convert_to_string_ex(zstream);

-               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);
+               wrapper = php_stream_locate_url_wrapper(Z_STRVAL_PP(zstream), 
NULL, 0 TSRMLS_CC);
        }

        if(!wrapper) {

Modified: php/php-src/trunk/ext/standard/streamsfuncs.c
===================================================================
--- php/php-src/trunk/ext/standard/streamsfuncs.c       2009-08-03 13:24:35 UTC 
(rev 286735)
+++ php/php-src/trunk/ext/standard/streamsfuncs.c       2009-08-03 13:26:15 UTC 
(rev 286736)
@@ -1735,32 +1735,24 @@
 */
 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;
+               convert_to_string_ex(zstream);

-               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);
+               wrapper = php_stream_locate_url_wrapper(Z_STRVAL_PP(zstream), 
NULL, 0 TSRMLS_CC);
        }

        if(!wrapper) {

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

Reply via email to