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 | |
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')
-rw-r--r-- | ext/standard/exec.c | 6 | ||||
-rw-r--r-- | ext/standard/file.c | 12 | ||||
-rw-r--r-- | ext/standard/fsock.c | 4 | ||||
-rw-r--r-- | ext/standard/image.c | 5 |
4 files changed, 11 insertions, 16 deletions
diff --git a/ext/standard/exec.c b/ext/standard/exec.c index f5f337fee5..4b6b75c768 100644 --- a/ext/standard/exec.c +++ b/ext/standard/exec.c @@ -49,7 +49,6 @@ int php_Exec(int type, char *cmd, pval *array, pval *return_value TSRMLS_DC) int buflen = 0; int t, l, output=1; int overflow_limit, lcmd, ldir; - int rsrc_id; char *b, *c, *d=NULL; php_stream *stream = NULL; #if PHP_SIGCHILD @@ -143,8 +142,6 @@ int php_Exec(int type, char *cmd, pval *array, pval *return_value TSRMLS_DC) */ stream = php_stream_fopen_from_pipe(fp, "rb"); - if (stream) - rsrc_id = ZEND_REGISTER_RESOURCE(NULL, stream, php_file_le_stream()); if (type != 3) { l=0; @@ -219,8 +216,7 @@ int php_Exec(int type, char *cmd, pval *array, pval *return_value TSRMLS_DC) } } - /* the zend_list_delete will pclose our popen'ed process */ - zend_list_delete(rsrc_id); + php_stream_close(stream); #if HAVE_SYS_WAIT_H if (WIFEXITED(FG(pclose_ret))) { 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); } diff --git a/ext/standard/fsock.c b/ext/standard/fsock.c index 84a12eb9fc..21eb6e8256 100644 --- a/ext/standard/fsock.c +++ b/ext/standard/fsock.c @@ -141,7 +141,7 @@ static void php_fsockopen_stream(INTERNAL_FUNCTION_PARAMETERS, int persistent) (void *) &stream) == SUCCESS) { efree(hashkey); - ZEND_REGISTER_RESOURCE(return_value, stream, php_file_le_stream()); + php_stream_to_zval(stream, return_value); return; } @@ -241,7 +241,7 @@ static void php_fsockopen_stream(INTERNAL_FUNCTION_PARAMETERS, int persistent) RETURN_FALSE; } - ZEND_REGISTER_RESOURCE(return_value, stream, php_file_le_stream()); + php_stream_to_zval(stream, return_value); } /* }}} */ diff --git a/ext/standard/image.c b/ext/standard/image.c index 9d6896c608..f12c8cb39e 100644 --- a/ext/standard/image.c +++ b/ext/standard/image.c @@ -684,7 +684,6 @@ PHPAPI int php_getimagetype(php_stream * stream, char *filetype TSRMLS_DC) PHP_FUNCTION(getimagesize) { zval **arg1, **info = NULL; - int rsrc_id; int itype = 0; char temp[64]; struct gfxinfo *result = NULL; @@ -723,8 +722,6 @@ PHP_FUNCTION(getimagesize) RETURN_FALSE; } - rsrc_id = ZEND_REGISTER_RESOURCE(NULL, stream, php_file_le_stream()); - itype = php_getimagetype(stream, NULL TSRMLS_CC); switch( itype) { case IMAGE_FILETYPE_GIF: @@ -763,7 +760,7 @@ PHP_FUNCTION(getimagesize) break; } - zend_list_delete(rsrc_id); + php_stream_close(stream); if (result) { if (array_init(return_value) == FAILURE) { |