1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-23 19:15:07 +00:00

FileDescription: Disallow construction with a null File

It's not valid for a FileDescription to not have a file, so let's
disallow it by taking a File& (or FIFO&) in the constructor.
This commit is contained in:
Andreas Kling 2019-08-11 09:32:21 +02:00
parent 0dc05a33c1
commit 752de9cd27
6 changed files with 18 additions and 19 deletions

View file

@ -15,23 +15,23 @@
#include <Kernel/VM/MemoryManager.h>
#include <LibC/errno_numbers.h>
NonnullRefPtr<FileDescription> FileDescription::create(RefPtr<Custody>&& custody)
NonnullRefPtr<FileDescription> FileDescription::create(Custody& custody)
{
auto description = adopt(*new FileDescription(InodeFile::create(custody->inode())));
description->m_custody = move(custody);
auto description = adopt(*new FileDescription(InodeFile::create(custody.inode())));
description->m_custody = custody;
return description;
}
NonnullRefPtr<FileDescription> FileDescription::create(RefPtr<File> file, SocketRole role)
NonnullRefPtr<FileDescription> FileDescription::create(File& file, SocketRole role)
{
return adopt(*new FileDescription(move(file), role));
return adopt(*new FileDescription(file, role));
}
FileDescription::FileDescription(RefPtr<File>&& file, SocketRole role)
: m_file(move(file))
FileDescription::FileDescription(File& file, SocketRole role)
: m_file(file)
{
if (m_file->is_inode())
m_inode = static_cast<InodeFile&>(*m_file).inode();
if (file.is_inode())
m_inode = static_cast<InodeFile&>(file).inode();
set_socket_role(role);
}
@ -42,7 +42,6 @@ FileDescription::~FileDescription()
if (is_fifo())
static_cast<FIFO*>(m_file.ptr())->detach(m_fifo_direction);
m_file->close();
m_file = nullptr;
m_inode = nullptr;
}