From a2600facdddfbed954d6aacf8333cd8402a50e83 Mon Sep 17 00:00:00 2001 From: Arnaud Le Blanc Date: Sat, 16 May 2009 20:23:06 +0000 Subject: [PATCH] MFH: 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 | 7 ++--- 2 files changed, 32 insertions(+), 5 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 00000000000..7e304b11889 --- /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 def2acec3d8..77a6b6e024a 100755 --- a/main/streams/streams.c +++ b/main/streams/streams.c @@ -1322,11 +1322,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;