diff options
| author | Felipe Pena <felipe@php.net> | 2009-08-03 13:16:24 +0000 |
|---|---|---|
| committer | Felipe Pena <felipe@php.net> | 2009-08-03 13:16:24 +0000 |
| commit | c46c584f9753c9baf659cebfa291d0d1aca26f04 (patch) | |
| tree | 9992934ce77d698951c44e272b392018a1e42796 | |
| parent | 28e248da9bf6d9dd170b41e3cef94d2bc63f1d07 (diff) | |
| download | php-git-c46c584f9753c9baf659cebfa291d0d1aca26f04.tar.gz | |
- Re-fix stream_is_local() memory leaks
| -rw-r--r-- | NEWS | 1 | ||||
| -rw-r--r-- | ext/standard/streamsfuncs.c | 13 | ||||
| -rw-r--r-- | ext/standard/tests/streams/stream_is_local.phpt | 17 |
3 files changed, 29 insertions, 2 deletions
@@ -3,6 +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 bug #49132 (posix_times returns false without error). (phpbugs at gunnu dot us) diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c index 43182c8030..f3b333b390 100644 --- a/ext/standard/streamsfuncs.c +++ b/ext/standard/streamsfuncs.c @@ -1397,8 +1397,17 @@ PHP_FUNCTION(stream_is_local) } 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(©_tmp); } if(!wrapper) { diff --git a/ext/standard/tests/streams/stream_is_local.phpt b/ext/standard/tests/streams/stream_is_local.phpt new file mode 100644 index 0000000000..c90eb19cde --- /dev/null +++ b/ext/standard/tests/streams/stream_is_local.phpt @@ -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) |
