diff options
| author | Wladimir J. van der Laan <[email protected]> | 2016-11-02 11:16:19 +0100 |
|---|---|---|
| committer | Wladimir J. van der Laan <[email protected]> | 2016-11-02 11:16:29 +0100 |
| commit | f8723d231812045b8ccd205eac71deeab43a168b (patch) | |
| tree | e69d7e4a7b9c3da52bffdce1b9ba9879e4038468 /src/support/allocators | |
| parent | Merge #9032: test: Add format-dependent comparison to bctest (diff) | |
| parent | bench: Add benchmark for lockedpool allocation/deallocation (diff) | |
| download | discoin-f8723d231812045b8ccd205eac71deeab43a168b.tar.xz discoin-f8723d231812045b8ccd205eac71deeab43a168b.zip | |
Merge #8753: Locked memory manager
444c673 bench: Add benchmark for lockedpool allocation/deallocation (Wladimir J. van der Laan)
6567999 rpc: Add `getmemoryinfo` call (Wladimir J. van der Laan)
4536148 support: Add LockedPool (Wladimir J. van der Laan)
f4d1fc2 wallet: Get rid of LockObject and UnlockObject calls in key.h (Wladimir J. van der Laan)
999e4c9 wallet: Change CCrypter to use vectors with secure allocator (Wladimir J. van der Laan)
Diffstat (limited to 'src/support/allocators')
| -rw-r--r-- | src/support/allocators/secure.h | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/src/support/allocators/secure.h b/src/support/allocators/secure.h index 1ec40fe83..67064314e 100644 --- a/src/support/allocators/secure.h +++ b/src/support/allocators/secure.h @@ -6,7 +6,8 @@ #ifndef BITCOIN_SUPPORT_ALLOCATORS_SECURE_H #define BITCOIN_SUPPORT_ALLOCATORS_SECURE_H -#include "support/pagelocker.h" +#include "support/lockedpool.h" +#include "support/cleanse.h" #include <string> @@ -39,20 +40,15 @@ struct secure_allocator : public std::allocator<T> { T* allocate(std::size_t n, const void* hint = 0) { - T* p; - p = std::allocator<T>::allocate(n, hint); - if (p != NULL) - LockedPageManager::Instance().LockRange(p, sizeof(T) * n); - return p; + return static_cast<T*>(LockedPoolManager::Instance().alloc(sizeof(T) * n)); } void deallocate(T* p, std::size_t n) { if (p != NULL) { memory_cleanse(p, sizeof(T) * n); - LockedPageManager::Instance().UnlockRange(p, sizeof(T) * n); } - std::allocator<T>::deallocate(p, n); + LockedPoolManager::Instance().free(p); } }; |