Pārlūkot izejas kodu

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.
Brian Gianforcaro 4 gadi atpakaļ
vecāks
revīzija
5e84320ecb
1 mainītis faili ar 12 papildinājumiem un 0 dzēšanām
  1. 12 0
      AK/ByteBuffer.h

+ 12 - 0
AK/ByteBuffer.h

@@ -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));