diff options
author | Andreas Kling <kling@serenityos.org> | 2020-04-05 11:11:07 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2020-04-05 11:19:00 +0200 |
commit | 1d468ed6d32675e6a48a62ce7e3ea2a15b9ca777 (patch) | |
tree | 0802da0fb4127bd1f44656408df10361c59d0743 /Kernel | |
parent | 058c614110da17336fdf0f4204bc9c030b3821ce (diff) | |
download | serenity-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.cpp | 4 |
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); |