1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-24 20:07:34 +00:00

FIFO: Let write() fail with EPIPE if there's no reader.

This commit is contained in:
Andreas Kling 2019-06-06 10:41:24 +02:00
parent 6fa727a88e
commit 1f17b40d00

View file

@ -88,7 +88,7 @@ bool FIFO::can_read(FileDescriptor&) const
bool FIFO::can_write(FileDescriptor&) const bool FIFO::can_write(FileDescriptor&) const
{ {
return m_buffer.bytes_in_write_buffer() < 4096; return m_buffer.bytes_in_write_buffer() < 4096 || !m_readers;
} }
ssize_t FIFO::read(FileDescriptor&, byte* buffer, ssize_t size) ssize_t FIFO::read(FileDescriptor&, byte* buffer, ssize_t size)
@ -108,7 +108,7 @@ ssize_t FIFO::read(FileDescriptor&, byte* buffer, ssize_t size)
ssize_t FIFO::write(FileDescriptor&, const byte* buffer, ssize_t size) ssize_t FIFO::write(FileDescriptor&, const byte* buffer, ssize_t size)
{ {
if (!m_readers) if (!m_readers)
return 0; return -EPIPE;
#ifdef FIFO_DEBUG #ifdef FIFO_DEBUG
dbgprintf("fifo: write(%p, %u)\n", buffer, size); dbgprintf("fifo: write(%p, %u)\n", buffer, size);
#endif #endif