diff options
author | Chris Wilson <chris+github@qwirx.com> | 2015-08-07 21:40:28 +0000 |
---|---|---|
committer | Chris Wilson <chris+github@qwirx.com> | 2015-08-07 21:40:28 +0000 |
commit | 5eb1612e1703cd566116b0a34517c2b04ce99bc6 (patch) | |
tree | ab067f91211879ae733c9a8fac7dd21a61c6889f /lib/common | |
parent | 784cfcbf6b4f5598a1eebfb0ee27b03f2ffb1021 (diff) |
Allow releasing a MemoryBlockGuard
Diffstat (limited to 'lib/common')
-rw-r--r-- | lib/common/Guards.h | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/common/Guards.h b/lib/common/Guards.h index 364252a5..46b6d2bd 100644 --- a/lib/common/Guards.h +++ b/lib/common/Guards.h @@ -77,7 +77,8 @@ class MemoryBlockGuard { public: MemoryBlockGuard(int BlockSize) - : mpBlock(::malloc(BlockSize)) + : mpBlock(::malloc(BlockSize)), + mBlockSize(BlockSize) { if(mpBlock == 0) { @@ -118,9 +119,21 @@ public: } mpBlock = ptrn; } + + void* Release() + { + void* pBlock = mpBlock; + mpBlock = ::malloc(mBlockSize); + if(mpBlock == 0) + { + throw std::bad_alloc(); + } + return pBlock; + } private: void *mpBlock; + int mBlockSize; }; #include "MemLeakFindOff.h" |