diff options
author | Wez Furlong <wez@php.net> | 2002-03-20 14:21:30 +0000 |
---|---|---|
committer | Wez Furlong <wez@php.net> | 2002-03-20 14:21:30 +0000 |
commit | 659a071e3df2f16cd21083d1dec8c19e199f7757 (patch) | |
tree | 893304b46b1d9c5f937dbbd84cf1a4b9f38f13ce /ext/standard/file.c | |
parent | 14d62c7b624cdcec1006c7d164bfb12b10ae18e5 (diff) | |
download | php-git-659a071e3df2f16cd21083d1dec8c19e199f7757.tar.gz |
Streams are all tracked as resources now.
Add some logic that will help track down leaks
when debug is enabled.
Diffstat (limited to 'ext/standard/file.c')
-rw-r--r-- | ext/standard/file.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/ext/standard/file.c b/ext/standard/file.c index a58b511902..cf76315f2b 100644 --- a/ext/standard/file.c +++ b/ext/standard/file.c @@ -113,7 +113,7 @@ static void _file_stream_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) { php_stream *stream = (php_stream*)rsrc->ptr; /* the stream might be a pipe, so set the return value for pclose */ - FG(pclose_ret) = php_stream_close(stream); + FG(pclose_ret) = php_stream_free(stream, PHP_STREAM_FREE_CLOSE | PHP_STREAM_FREE_RSRC_DTOR); } PHPAPI int php_file_le_stream(void) @@ -528,7 +528,7 @@ PHP_NAMED_FUNCTION(php_if_tmpfile) stream = php_stream_fopen_tmpfile(); if (stream) { - ZEND_REGISTER_RESOURCE(return_value, stream, le_stream); + php_stream_to_zval(stream, return_value); } else { RETURN_FALSE; @@ -593,7 +593,9 @@ PHP_NAMED_FUNCTION(php_if_fopen) RETURN_FALSE; } FG(fgetss_state) = 0; - ZEND_REGISTER_RESOURCE(return_value, stream, le_stream); + + php_stream_to_zval(stream, return_value); + return; } /* }}} */ @@ -676,9 +678,9 @@ PHP_FUNCTION(popen) if (stream == NULL) { zend_error(E_WARNING, "popen(\"%s\", \"%s\"): %s", Z_STRVAL_PP(arg1), p, strerror(errno)); RETVAL_FALSE; + } else { + php_stream_to_zval(stream, return_value); } - else - ZEND_REGISTER_RESOURCE(return_value, stream, le_stream); efree(p); } |