1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 05:37:34 +00:00

Kernel: Enforce the fact that KBuffer always has internal storage

There are no remaining code paths where KBuffer can end up with a null
internal storage pointer, so let's make it a NonnullRefPtr.
This commit is contained in:
Andreas Kling 2021-09-07 15:59:34 +02:00
parent 16cd86b845
commit 1a04dc9cba

View file

@ -113,12 +113,12 @@ public:
return adopt_nonnull_own_or_enomem(new (nothrow) KBuffer(impl.release_nonnull())); return adopt_nonnull_own_or_enomem(new (nothrow) KBuffer(impl.release_nonnull()));
} }
[[nodiscard]] bool is_null() const { return !m_impl; } [[nodiscard]] bool is_null() const { return false; }
[[nodiscard]] u8* data() { return m_impl ? m_impl->data() : nullptr; } [[nodiscard]] u8* data() { return m_impl->data(); }
[[nodiscard]] const u8* data() const { return m_impl ? m_impl->data() : nullptr; } [[nodiscard]] const u8* data() const { return m_impl->data(); }
[[nodiscard]] size_t size() const { return m_impl ? m_impl->size() : 0; } [[nodiscard]] size_t size() const { return m_impl->size(); }
[[nodiscard]] size_t capacity() const { return m_impl ? m_impl->capacity() : 0; } [[nodiscard]] size_t capacity() const { return m_impl->capacity(); }
[[nodiscard]] void* end_pointer() { return data() + size(); } [[nodiscard]] void* end_pointer() { return data() + size(); }
[[nodiscard]] const void* end_pointer() const { return data() + size(); } [[nodiscard]] const void* end_pointer() const { return data() + size(); }
@ -129,12 +129,12 @@ public:
[[nodiscard]] const KBufferImpl& impl() const { return *m_impl; } [[nodiscard]] const KBufferImpl& impl() const { return *m_impl; }
private: private:
explicit KBuffer(RefPtr<KBufferImpl>&& impl) explicit KBuffer(NonnullRefPtr<KBufferImpl> impl)
: m_impl(move(impl)) : m_impl(move(impl))
{ {
} }
RefPtr<KBufferImpl> m_impl; NonnullRefPtr<KBufferImpl> m_impl;
}; };
} }