1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-28 16:15:10 +00:00

Kernel/DevFS: Use KString for DevFSLinkInode::m_link

This commit is contained in:
Andreas Kling 2021-07-17 22:11:41 +02:00
parent cd4d73e19e
commit 0d89cfcd9a
2 changed files with 10 additions and 6 deletions

View file

@ -158,10 +158,10 @@ KResultOr<size_t> DevFSLinkInode::read_bytes(off_t offset, size_t, UserOrKernelB
{ {
Locker locker(m_inode_lock); Locker locker(m_inode_lock);
VERIFY(offset == 0); VERIFY(offset == 0);
VERIFY(!m_link.is_null()); VERIFY(m_link);
if (!buffer.write(((const u8*)m_link.substring_view(0).characters_without_null_termination()) + offset, m_link.length())) if (!buffer.write(m_link->characters() + offset, m_link->length()))
return EFAULT; return EFAULT;
return m_link.length(); return m_link->length();
} }
InodeMetadata DevFSLinkInode::metadata() const InodeMetadata DevFSLinkInode::metadata() const
@ -176,12 +176,16 @@ InodeMetadata DevFSLinkInode::metadata() const
return metadata; return metadata;
} }
KResultOr<size_t> DevFSLinkInode::write_bytes(off_t offset, size_t count, const UserOrKernelBuffer& buffer, FileDescription*) KResultOr<size_t> DevFSLinkInode::write_bytes(off_t offset, size_t count, UserOrKernelBuffer const& buffer, FileDescription*)
{ {
auto kstring_or_error = buffer.try_copy_into_kstring(count);
if (kstring_or_error.is_error())
return kstring_or_error.error();
Locker locker(m_inode_lock); Locker locker(m_inode_lock);
VERIFY(offset == 0); VERIFY(offset == 0);
VERIFY(buffer.is_kernel_buffer()); VERIFY(buffer.is_kernel_buffer());
m_link = buffer.copy_into_string(count); m_link = kstring_or_error.release_value();
return count; return count;
} }

View file

@ -104,7 +104,7 @@ protected:
virtual KResultOr<size_t> write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, FileDescription*) override; virtual KResultOr<size_t> write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, FileDescription*) override;
NonnullOwnPtr<KString> m_name; NonnullOwnPtr<KString> m_name;
String m_link; OwnPtr<KString> m_link;
}; };
class DevFSDirectoryInode : public DevFSInode { class DevFSDirectoryInode : public DevFSInode {