summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xmain/php_streams.h2
-rw-r--r--main/streams/cast.c14
-rwxr-xr-xmain/streams/streams.c2
3 files changed, 10 insertions, 8 deletions
diff --git a/main/php_streams.h b/main/php_streams.h
index b87cf1b86e..b1d70a8401 100755
--- a/main/php_streams.h
+++ b/main/php_streams.h
@@ -438,7 +438,7 @@ BEGIN_EXTERN_C()
ZEND_ATTRIBUTE_DEPRECATED
PHPAPI size_t _php_stream_copy_to_stream(php_stream *src, php_stream *dest, size_t maxlen STREAMS_DC TSRMLS_DC);
#define php_stream_copy_to_stream(src, dest, maxlen) _php_stream_copy_to_stream((src), (dest), (maxlen) STREAMS_CC TSRMLS_CC)
-PHPAPI size_t _php_stream_copy_to_stream_ex(php_stream *src, php_stream *dest, size_t maxlen, size_t *len STREAMS_DC TSRMLS_DC);
+PHPAPI int _php_stream_copy_to_stream_ex(php_stream *src, php_stream *dest, size_t maxlen, size_t *len STREAMS_DC TSRMLS_DC);
#define php_stream_copy_to_stream_ex(src, dest, maxlen, len) _php_stream_copy_to_stream_ex((src), (dest), (maxlen), (len) STREAMS_CC TSRMLS_CC)
diff --git a/main/streams/cast.c b/main/streams/cast.c
index 38eb1a987c..305ee6e8aa 100644
--- a/main/streams/cast.c
+++ b/main/streams/cast.c
@@ -271,15 +271,15 @@ PHPAPI int _php_stream_cast(php_stream *stream, int castas, void **ret, int show
newstream = php_stream_fopen_tmpfile();
if (newstream) {
- size_t retval = php_stream_copy_to_stream_ex(stream, newstream, PHP_STREAM_COPY_ALL, NULL);
+ int retcopy = php_stream_copy_to_stream_ex(stream, newstream, PHP_STREAM_COPY_ALL, NULL);
- if (ret != SUCCESS) {
+ if (retcopy != SUCCESS) {
php_stream_close(newstream);
} else {
- int retcode = php_stream_cast(newstream, castas | flags, (void **)ret, show_err);
+ int retcast = php_stream_cast(newstream, castas | flags, (void **)ret, show_err);
- if (retcode == SUCCESS) {
- rewind(*(FILE**)retval);
+ if (retcast == SUCCESS) {
+ rewind(*(FILE**)ret);
}
/* do some specialized cleanup */
@@ -287,7 +287,9 @@ PHPAPI int _php_stream_cast(php_stream *stream, int castas, void **ret, int show
php_stream_free(stream, PHP_STREAM_FREE_CLOSE_CASTED);
}
- return retcode;
+ /* TODO: we probably should be setting .stdiocast and .fclose_stdiocast or
+ * we may be leaking the FILE*. Needs investigation, though. */
+ return retcast;
}
}
}
diff --git a/main/streams/streams.c b/main/streams/streams.c
index 15c1454547..4679a97aa6 100755
--- a/main/streams/streams.c
+++ b/main/streams/streams.c
@@ -1417,7 +1417,7 @@ PHPAPI size_t _php_stream_copy_to_mem(php_stream *src, char **buf, size_t maxlen
}
/* Returns SUCCESS/FAILURE and sets *len to the number of bytes moved */
-PHPAPI size_t _php_stream_copy_to_stream_ex(php_stream *src, php_stream *dest, size_t maxlen, size_t *len STREAMS_DC TSRMLS_DC)
+PHPAPI int _php_stream_copy_to_stream_ex(php_stream *src, php_stream *dest, size_t maxlen, size_t *len STREAMS_DC TSRMLS_DC)
{
char buf[CHUNK_SIZE];
size_t readchunk;