1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 05:38:11 +00:00

Deallocate PTY's when they close.

This required a fair bit of plumbing. The CharacterDevice::close() virtual
will now be closed by ~FileDescriptor(), allowing device implementations to
do custom cleanup at that point.

One big problem remains: if the master PTY is closed before the slave PTY,
we go into crashy land.
This commit is contained in:
Andreas Kling 2019-01-30 18:26:19 +01:00
parent 027d26cd5d
commit b4e478aa50
19 changed files with 104 additions and 12 deletions

View file

@ -40,8 +40,15 @@ FileDescriptor::FileDescriptor(RetainPtr<CharacterDevice>&& device)
FileDescriptor::~FileDescriptor()
{
if (m_fifo)
if (m_device) {
m_device->close();
m_device = nullptr;
}
if (m_fifo) {
m_fifo->close(fifo_direction());
m_fifo = nullptr;
}
m_inode = nullptr;
}
RetainPtr<FileDescriptor> FileDescriptor::clone()