mirror of
https://github.com/SerenityOS/serenity
synced 2024-07-23 19:15:55 +00: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
|
@ -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