summaryrefslogtreecommitdiff
path: root/lib/common
diff options
context:
space:
mode:
authorChris Wilson <chris+github@qwirx.com>2015-08-07 21:40:28 +0000
committerChris Wilson <chris+github@qwirx.com>2015-08-07 21:40:28 +0000
commit5eb1612e1703cd566116b0a34517c2b04ce99bc6 (patch)
treeab067f91211879ae733c9a8fac7dd21a61c6889f /lib/common
parent784cfcbf6b4f5598a1eebfb0ee27b03f2ffb1021 (diff)
Allow releasing a MemoryBlockGuard
Diffstat (limited to 'lib/common')
-rw-r--r--lib/common/Guards.h15
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"