- Fixed segfault on invalid session.save_path. (Hannes)
- Fixed leaks in imap when a mail_criteria is used. (Pierre)
+- Fixed bug #48307 (stream_copy_to_stream() copies 0 bytes when $source is a
+ socket). (Arnaud)
- Fixed bug #48256 (Crash due to double-linking of history.o).
(tstarling at wikimedia dot org)
- Fixed bug #48248 (SIGSEGV when access to private property via &__get).
--- /dev/null
+--TEST--
+stream_copy_to_stream() with socket as $source
+--SKIPIF--
+<?php
+$sockets = @stream_socket_pair(STREAM_PF_UNIX, STREAM_SOCK_STREAM, 0);
+if (!$sockets) die("skip stream_socket_pair");
+?>
+--FILE--
+<?php
+
+$sockets = stream_socket_pair(STREAM_PF_UNIX, STREAM_SOCK_STREAM, 0);
+$tmp = tmpfile();
+
+fwrite($sockets[0], b"a");
+stream_socket_shutdown($sockets[0], STREAM_SHUT_WR);
+stream_copy_to_stream($sockets[1], $tmp);
+
+fseek($tmp, 0, SEEK_SET);
+var_dump(stream_get_contents($tmp));
+
+stream_copy_to_stream($sockets[1], $tmp);
+
+fseek($tmp, 0, SEEK_SET);
+var_dump(stream_get_contents($tmp));
+
+
+?>
+--EXPECT--
+string(1) "a"
+string(1) "a"
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;