summaryrefslogtreecommitdiff
path: root/Kernel
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2020-04-05 11:11:07 +0200
committerAndreas Kling <kling@serenityos.org>2020-04-05 11:19:00 +0200
commit1d468ed6d32675e6a48a62ce7e3ea2a15b9ca777 (patch)
tree0802da0fb4127bd1f44656408df10361c59d0743 /Kernel
parent058c614110da17336fdf0f4204bc9c030b3821ce (diff)
downloadserenity-1d468ed6d32675e6a48a62ce7e3ea2a15b9ca777.zip
AK: Stop allowing implicit downcast with RefPtr and NonnullRefPtr
We were allowing this dangerous kind of thing: RefPtr<Base> base; RefPtr<Derived> derived = base; This patch changes the {Nonnull,}RefPtr constructors so this is no longer possible. To downcast one of these pointers, there is now static_ptr_cast<T>: RefPtr<Derived> derived = static_ptr_cast<Derived>(base); Fixing this exposed a ton of cowboy-downcasts in various places, which we're now forced to fix. :^)
Diffstat (limited to 'Kernel')
-rw-r--r--Kernel/FileSystem/TmpFS.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/Kernel/FileSystem/TmpFS.cpp b/Kernel/FileSystem/TmpFS.cpp
index e916a33980..20f5559488 100644
--- a/Kernel/FileSystem/TmpFS.cpp
+++ b/Kernel/FileSystem/TmpFS.cpp
@@ -307,8 +307,8 @@ KResult TmpFSInode::add_child(InodeIdentifier child_id, const StringView& name,
String owned_name = name;
FS::DirectoryEntry entry = { owned_name.characters(), owned_name.length(), child_id, 0 };
- RefPtr<Inode> child_tmp = fs().get_inode(child_id);
- NonnullRefPtr<TmpFSInode> child = static_cast<NonnullRefPtr<TmpFSInode>>(child_tmp.release_nonnull());
+ auto child_tmp = fs().get_inode(child_id);
+ auto child = static_ptr_cast<TmpFSInode>(child_tmp.release_nonnull());
m_children.set(owned_name, { entry, move(child) });
set_metadata_dirty(true);