mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-30 00:31:14 +00:00
Kernel: Move DevFS APIs towards OOM safety
This commit is contained in:
parent
d2d6ab40f9
commit
8f9872581b
Notes:
sideshowbarker
2024-07-18 17:02:20 +09:00
Author: https://github.com/bgianfo Commit: https://github.com/SerenityOS/serenity/commit/8f9872581b9 Pull-request: https://github.com/SerenityOS/serenity/pull/7624
|
@ -275,13 +275,15 @@ KResultOr<NonnullRefPtr<Inode>> 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<NonnullRefPtr<Inode>> 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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue