diff --git a/Kernel/FileSystem/DevFS.cpp b/Kernel/FileSystem/DevFS.cpp index 8f0507c805..9092656d07 100644 --- a/Kernel/FileSystem/DevFS.cpp +++ b/Kernel/FileSystem/DevFS.cpp @@ -275,13 +275,15 @@ KResultOr> DevFSRootDirectoryInode::create_child(const Stri } if (name != "pts") return EROFS; - auto new_directory_inode = adopt_ref(*new DevFSPtsDirectoryInode(m_parent_fs)); + auto new_directory_inode = adopt_ref_if_nonnull(new DevFSPtsDirectoryInode(m_parent_fs)); + if (!new_directory_inode) + return ENOMEM; if (!m_subfolders.try_ensure_capacity(m_subfolders.size() + 1)) return ENOMEM; if (!m_parent_fs.m_nodes.try_ensure_capacity(m_parent_fs.m_nodes.size() + 1)) return ENOMEM; - m_subfolders.append(new_directory_inode); - m_parent_fs.m_nodes.append(new_directory_inode); + m_subfolders.append(*new_directory_inode); + m_parent_fs.m_nodes.append(*new_directory_inode); return KResult(KSuccess); } if (metadata.is_symlink()) { @@ -289,14 +291,16 @@ KResultOr> DevFSRootDirectoryInode::create_child(const Stri if (link.name() == name) return EEXIST; } - auto new_link_inode = adopt_ref(*new DevFSLinkInode(m_parent_fs, name)); + auto new_link_inode = adopt_ref_if_nonnull(new DevFSLinkInode(m_parent_fs, name)); + if (!new_link_inode) + return ENOMEM; if (!m_links.try_ensure_capacity(m_links.size() + 1)) return ENOMEM; if (!m_parent_fs.m_nodes.try_ensure_capacity(m_parent_fs.m_nodes.size() + 1)) return ENOMEM; - m_links.append(new_link_inode); - m_parent_fs.m_nodes.append(new_link_inode); - return new_link_inode; + m_links.append(*new_link_inode); + m_parent_fs.m_nodes.append(*new_link_inode); + return new_link_inode.release_nonnull(); } return EROFS; }