From dec2e0d9e493b53c48ca26b47028ab309d3cc586 Mon Sep 17 00:00:00 2001 From: lloyd Date: Tue, 18 Nov 2014 13:42:36 +0000 Subject: Convert compression filters to in-place transforms and refactor to minimize the amount of logic needed in the files specific to each library. --- src/lib/compression/comp_util.cpp | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/lib/compression/comp_util.cpp (limited to 'src/lib/compression/comp_util.cpp') diff --git a/src/lib/compression/comp_util.cpp b/src/lib/compression/comp_util.cpp new file mode 100644 index 000000000..7fca1852d --- /dev/null +++ b/src/lib/compression/comp_util.cpp @@ -0,0 +1,34 @@ +/* +* Allocation Tracker +* (C) 2014 Jack Lloyd +* +* Distributed under the terms of the Botan license +*/ + +#include +#include +#include + +namespace Botan { + +void* Compression_Alloc_Info::do_malloc(size_t n, size_t size) + { + const size_t total_sz = n * size; + + void* ptr = std::malloc(total_sz); + m_current_allocs[ptr] = total_sz; + return ptr; + } + +void Compression_Alloc_Info::do_free(void* ptr) + { + auto i = m_current_allocs.find(ptr); + if(i == m_current_allocs.end()) + throw std::runtime_error("Compression_Alloc_Info::free got pointer not allocated by us"); + + std::memset(ptr, 0, i->second); + std::free(ptr); + m_current_allocs.erase(i); + } + +} -- cgit v1.2.3