diff --git a/Kernel/MasterPTY.cpp b/Kernel/MasterPTY.cpp index 2f6a90896a..7f0e8d966e 100644 --- a/Kernel/MasterPTY.cpp +++ b/Kernel/MasterPTY.cpp @@ -12,6 +12,7 @@ MasterPTY::MasterPTY(unsigned index) MasterPTY::~MasterPTY() { + dbgprintf("~MasterPTY(%u)\n", m_index); PTYMultiplexer::the().notify_master_destroyed(Badge(), m_index); } diff --git a/Kernel/SlavePTY.cpp b/Kernel/SlavePTY.cpp index 9944a33a3a..43c9e00df4 100644 --- a/Kernel/SlavePTY.cpp +++ b/Kernel/SlavePTY.cpp @@ -14,6 +14,7 @@ SlavePTY::SlavePTY(MasterPTY& master, unsigned index) SlavePTY::~SlavePTY() { + dbgprintf("~SlavePTY(%u)\n", m_index); DevPtsFS::the().unregister_slave_pty(*this); VFS::the().unregister_character_device(*this); } @@ -31,15 +32,15 @@ void SlavePTY::on_master_write(const byte* buffer, size_t size) void SlavePTY::on_tty_write(const byte* data, size_t size) { - m_master.on_slave_write(data, size); + m_master->on_slave_write(data, size); } bool SlavePTY::can_write(Process&) const { - return m_master.can_write_from_slave(); + return m_master->can_write_from_slave(); } void SlavePTY::close() { - m_master.notify_slave_closed(Badge()); + m_master->notify_slave_closed(Badge()); } diff --git a/Kernel/SlavePTY.h b/Kernel/SlavePTY.h index a2a95cf051..4768a707a5 100644 --- a/Kernel/SlavePTY.h +++ b/Kernel/SlavePTY.h @@ -27,7 +27,7 @@ private: friend class MasterPTY; SlavePTY(MasterPTY&, unsigned index); - MasterPTY& m_master; + RetainPtr m_master; unsigned m_index; InodeIdentifier m_devpts_inode_id; }; diff --git a/Terminal/main.cpp b/Terminal/main.cpp index aabce8b0b1..98b29047dd 100644 --- a/Terminal/main.cpp +++ b/Terminal/main.cpp @@ -87,6 +87,7 @@ int main(int, char**) int nfds = select(max(ptm_fd, event_fd) + 1, &rfds, nullptr, nullptr, nullptr); if (nfds < 0) { dbgprintf("Terminal(%u) select() failed :( errno=%d\n", getpid(), errno); + return 1; } if (FD_ISSET(ptm_fd, &rfds)) {