mirror of
https://github.com/RGBCube/serenity
synced 2025-07-24 15:47:42 +00:00
![]() The `File::can_write` mechanism lets us check that writes won't block, meaning some bytes can be immediately written to the underlying device. This means calling `File::write` in a situation where no data could be written is a logic error, which we `VERIFY()` in `Process::do_write()`. TTY, in particular, processes the write in 256-byte buffered chunks. Previously, we would assert that none of these sub-writes returned zero. This was a logic error, as this rejected some successful writes. For example, if there was exactly enough free space in `SlavePty`'s internal buffer for the previous sub-write to complete fully. This made it impossible to perform writes larger than `SlavePty`'s internal buffer. Note that it's not an issue if `on_tty_write` returns zero, as partial writes are handled correctly by the `buffer.read_buffered` helper. We won't spin in a loop trying to write to a full buffer. Fixes #8090 |
||
---|---|---|
.. | ||
ConsoleManagement.cpp | ||
ConsoleManagement.h | ||
MasterPTY.cpp | ||
MasterPTY.h | ||
PTYMultiplexer.cpp | ||
PTYMultiplexer.h | ||
SlavePTY.cpp | ||
SlavePTY.h | ||
TTY.cpp | ||
TTY.h | ||
VirtualConsole.cpp | ||
VirtualConsole.h |