From 627bd655347cb3aaf04b352e4f0a0207d64c8cb1 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Wed, 16 May 2018 11:00:10 +0200 Subject: Fix memory leak (mismatch free/delete/delete[]), fix invalid memory access --- include/odhtdb/OwnedMemory.hpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'include/odhtdb/OwnedMemory.hpp') diff --git a/include/odhtdb/OwnedMemory.hpp b/include/odhtdb/OwnedMemory.hpp index 67afe06..4c6df1c 100644 --- a/include/odhtdb/OwnedMemory.hpp +++ b/include/odhtdb/OwnedMemory.hpp @@ -22,4 +22,32 @@ namespace odhtdb void *data; usize size; }; + + class OwnedByteArray + { + public: + OwnedByteArray() : data(nullptr), size(0) {} + OwnedByteArray(u8 *_data, usize _size) : data(_data), size(_size) {} + OwnedByteArray(OwnedByteArray &&other) + { + data = other.data; + size = other.size; + + other.data = nullptr; + other.size = 0; + } + ~OwnedByteArray() + { + delete[] data; + } + + // Do not allow copy of this struct, forcing move when returning a OwnedByteArray in a function + OwnedByteArray(OwnedByteArray&) = delete; + OwnedByteArray& operator = (OwnedByteArray&) = delete; + + const DataView getView() const { return DataView(data, size); } + + u8 *data; + usize size; + }; } -- cgit v1.2.3