From 804ed57ad31c5e24645da336f9f04b7616e396fb Mon Sep 17 00:00:00 2001 From: Arnaud Le Blanc Date: Sat, 16 May 2009 20:22:29 +0000 Subject: [PATCH] Fixed bug #48307 (stream_copy_to_stream() copies 0 bytes when $source is a socket) --- .../streams/stream_copy_to_stream_socket.phpt | 30 +++++++++++++++++++ main/streams/streams.c | 14 +++------ 2 files changed, 34 insertions(+), 10 deletions(-) create mode 100644 ext/standard/tests/streams/stream_copy_to_stream_socket.phpt diff --git a/ext/standard/tests/streams/stream_copy_to_stream_socket.phpt b/ext/standard/tests/streams/stream_copy_to_stream_socket.phpt new file mode 100644 index 0000000000..7e304b1188 --- /dev/null +++ b/ext/standard/tests/streams/stream_copy_to_stream_socket.phpt @@ -0,0 +1,30 @@ +--TEST-- +stream_copy_to_stream() with socket as $source +--SKIPIF-- + +--FILE-- + +--EXPECT-- +string(1) "a" +string(1) "a" diff --git a/main/streams/streams.c b/main/streams/streams.c index 9dd9135097..e953a1690f 100755 --- a/main/streams/streams.c +++ b/main/streams/streams.c @@ -1794,11 +1794,8 @@ PHPAPI size_t _php_stream_ucopy_to_stream_ex(php_stream *src, php_stream *dest, if (php_stream_stat(src, &ssbuf) == 0) { if (ssbuf.sb.st_size == 0 -#ifdef S_ISFIFO - && !S_ISFIFO(ssbuf.sb.st_mode) -#endif -#ifdef S_ISCHR - && !S_ISCHR(ssbuf.sb.st_mode) +#ifdef S_ISREG + && S_ISREG(ssbuf.sb.st_mode) #endif ) { *len = 0; @@ -1901,11 +1898,8 @@ PHPAPI size_t _php_stream_copy_to_stream_ex(php_stream *src, php_stream *dest, s if (php_stream_stat(src, &ssbuf) == 0) { if (ssbuf.sb.st_size == 0 -#ifdef S_ISFIFO - && !S_ISFIFO(ssbuf.sb.st_mode) -#endif -#ifdef S_ISCHR - && !S_ISCHR(ssbuf.sb.st_mode) +#ifdef S_ISREG + && S_ISREG(ssbuf.sb.st_mode) #endif ) { *len = 0; -- 2.40.0