summaryrefslogtreecommitdiff
path: root/main/streams
diff options
context:
space:
mode:
authorRemi Collet <remi@php.net>2013-04-02 16:24:14 +0200
committerRemi Collet <remi@php.net>2013-04-02 16:24:14 +0200
commitce89bc8743801a9d4997d0781d4bc48dd805e94b (patch)
tree5d4343834a47cf45508ed61bb9e2e262d27dd8c0 /main/streams
parent23b44e7f39c8a162feb4976151d1ce4badbaba67 (diff)
parent8e8a75444cbb6bb108e212d48513343fe21c9255 (diff)
downloadphp-git-ce89bc8743801a9d4997d0781d4bc48dd805e94b.tar.gz
Merge branch 'PHP-5.4' into PHP-5.5
* PHP-5.4: fix comment Fixed Bug #64565 copy doesn't report failure on partial copy
Diffstat (limited to 'main/streams')
-rw-r--r--main/streams/streams.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/main/streams/streams.c b/main/streams/streams.c
index 4163c5b392..1fae2e91ce 100644
--- a/main/streams/streams.c
+++ b/main/streams/streams.c
@@ -1489,7 +1489,7 @@ PHPAPI int _php_stream_copy_to_stream_ex(php_stream *src, php_stream *dest, size
char buf[CHUNK_SIZE];
size_t readchunk;
size_t haveread = 0;
- size_t didread;
+ size_t didread, didwrite, towrite;
size_t dummy;
php_stream_statbuf ssbuf;
@@ -1524,16 +1524,14 @@ PHPAPI int _php_stream_copy_to_stream_ex(php_stream *src, php_stream *dest, size
p = php_stream_mmap_range(src, php_stream_tell(src), maxlen, PHP_STREAM_MAP_MODE_SHARED_READONLY, &mapped);
if (p) {
- mapped = php_stream_write(dest, p, mapped);
+ didwrite = php_stream_write(dest, p, mapped);
php_stream_mmap_unmap_ex(src, mapped);
- *len = mapped;
+ *len = didwrite;
- /* we've got at least 1 byte to read.
- * less than 1 is an error */
-
- if (mapped > 0) {
+ /* read bytes match written */
+ if (mapped == didwrite) {
return SUCCESS;
}
return FAILURE;
@@ -1551,7 +1549,6 @@ PHPAPI int _php_stream_copy_to_stream_ex(php_stream *src, php_stream *dest, size
if (didread) {
/* extra paranoid */
- size_t didwrite, towrite;
char *writeptr;
towrite = didread;