From dd37d0a32764a2f7aa1def90a52fca279a9d0b1c Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 17 Jul 2021 21:39:42 +0200 Subject: [PATCH] Kernel/DevFS: Use KString for DevFSLinkInode::m_name --- Kernel/FileSystem/DevFS.cpp | 14 ++++++++++---- Kernel/FileSystem/DevFS.h | 4 ++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Kernel/FileSystem/DevFS.cpp b/Kernel/FileSystem/DevFS.cpp index 7bc8f70d5b..94bb95e72c 100644 --- a/Kernel/FileSystem/DevFS.cpp +++ b/Kernel/FileSystem/DevFS.cpp @@ -141,16 +141,19 @@ KResult DevFSInode::truncate(u64) StringView DevFSLinkInode::name() const { - return m_name; + return m_name->view(); } + DevFSLinkInode::~DevFSLinkInode() { } -DevFSLinkInode::DevFSLinkInode(DevFS& fs, String name) + +DevFSLinkInode::DevFSLinkInode(DevFS& fs, NonnullOwnPtr name) : DevFSInode(fs) - , m_name(name) + , m_name(move(name)) { } + KResultOr DevFSLinkInode::read_bytes(off_t offset, size_t, UserOrKernelBuffer& buffer, FileDescription*) const { Locker locker(m_inode_lock); @@ -291,7 +294,10 @@ KResultOr> DevFSRootDirectoryInode::create_child(StringView if (link.name() == name) return EEXIST; } - auto new_link_inode = adopt_ref_if_nonnull(new (nothrow) DevFSLinkInode(m_parent_fs, name)); + auto name_kstring = KString::try_create(name); + if (!name_kstring) + return ENOMEM; + auto new_link_inode = adopt_ref_if_nonnull(new (nothrow) DevFSLinkInode(m_parent_fs, name_kstring.release_nonnull())); if (!new_link_inode) return ENOMEM; if (!m_links.try_ensure_capacity(m_links.size() + 1)) diff --git a/Kernel/FileSystem/DevFS.h b/Kernel/FileSystem/DevFS.h index 4096ededdf..fed150869c 100644 --- a/Kernel/FileSystem/DevFS.h +++ b/Kernel/FileSystem/DevFS.h @@ -97,13 +97,13 @@ public: virtual ~DevFSLinkInode() override; protected: - DevFSLinkInode(DevFS&, String); + DevFSLinkInode(DevFS&, NonnullOwnPtr); // ^Inode virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override; virtual InodeMetadata metadata() const override; virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, FileDescription*) override; - const String m_name; + NonnullOwnPtr m_name; String m_link; };