mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-01-22 09:12:13 -05:00
AK: Add safe memset() wrapper to ByteBuffer
In the interest memory safety and of removing as many of foot guns as possible (like raw memset's which are notorious for typo's), a zeroing method seems like a useful utility to have on a buffer class.
This commit is contained in:
parent
86a3363ddf
commit
5e84320ecb
Notes:
sideshowbarker
2024-07-18 22:03:56 +09:00
Author: https://github.com/bgianfo Commit: https://github.com/SerenityOS/serenity/commit/5e84320ecb8 Pull-request: https://github.com/SerenityOS/serenity/pull/5449 Reviewed-by: https://github.com/awesomekling
1 changed files with 12 additions and 0 deletions
|
@ -89,6 +89,8 @@ public:
|
|||
|
||||
void grow(size_t size);
|
||||
|
||||
void zero_fill();
|
||||
|
||||
private:
|
||||
explicit ByteBufferImpl(size_t);
|
||||
ByteBufferImpl(const void*, size_t);
|
||||
|
@ -248,6 +250,11 @@ public:
|
|||
__builtin_memcpy(this->data() + offset, data, data_size);
|
||||
}
|
||||
|
||||
void zero_fill()
|
||||
{
|
||||
m_impl->zero_fill();
|
||||
}
|
||||
|
||||
operator Bytes() { return bytes(); }
|
||||
operator ReadonlyBytes() const { return bytes(); }
|
||||
|
||||
|
@ -295,6 +302,11 @@ inline void ByteBufferImpl::grow(size_t size)
|
|||
kfree(old_data);
|
||||
}
|
||||
|
||||
inline void ByteBufferImpl::zero_fill()
|
||||
{
|
||||
__builtin_memset(m_data, 0, m_size);
|
||||
}
|
||||
|
||||
inline NonnullRefPtr<ByteBufferImpl> ByteBufferImpl::create_uninitialized(size_t size)
|
||||
{
|
||||
return ::adopt(*new ByteBufferImpl(size));
|
||||
|
|
Loading…
Reference in a new issue