diff options
Diffstat (limited to 'source/libs/asura-lib-utils/io/data_buffer.cpp')
-rw-r--r-- | source/libs/asura-lib-utils/io/data_buffer.cpp | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/source/libs/asura-lib-utils/io/data_buffer.cpp b/source/libs/asura-lib-utils/io/data_buffer.cpp index 98675e9..3c0100b 100644 --- a/source/libs/asura-lib-utils/io/data_buffer.cpp +++ b/source/libs/asura-lib-utils/io/data_buffer.cpp @@ -32,19 +32,27 @@ namespace AsuraEngine delete[] mBytes; } - void DataBuffer::Load(DataBuffer& db) - { - Load(db.GetData(), db.GetSize()); - } - - void DataBuffer::Load(const void* data, std::size_t size) + void DataBuffer::Refactor(size_t size) { if (!mBytes || mSize != size) { delete[] mBytes; mBytes = new byte[size]; + mSize = size; } - memcpy(mBytes, data, size); + memset(mBytes, 0, size * sizeof(byte)); + } + + size_t DataBuffer::Load(DataBuffer& db) + { + return Load(db.GetData(), db.GetSize()); + } + + size_t DataBuffer::Load(const void* data, std::size_t size) + { + size_t len = mSize > size ? size : mSize; + memcpy(mBytes, data, len); + return len; } void DataBuffer::Move(void* bytes, std::size_t size) |