From 3e4234e04945207842fef98d04ba8d2e911ce941 Mon Sep 17 00:00:00 2001 From: Pavel Kirienko Date: Sat, 12 Apr 2014 17:48:00 +0400 Subject: [PATCH] Allocator fixes --- libuavcan/src/uc_dynamic_memory.cpp | 2 +- libuavcan/test/dynamic_memory.cpp | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/libuavcan/src/uc_dynamic_memory.cpp b/libuavcan/src/uc_dynamic_memory.cpp index 4c5ddf5885..85e2a03163 100644 --- a/libuavcan/src/uc_dynamic_memory.cpp +++ b/libuavcan/src/uc_dynamic_memory.cpp @@ -45,7 +45,7 @@ std::size_t LimitedPoolAllocator::getBlockSize() const std::size_t LimitedPoolAllocator::getNumBlocks() const { - return allocator_.getNumBlocks(); + return std::min(max_blocks_, allocator_.getNumBlocks()); } } diff --git a/libuavcan/test/dynamic_memory.cpp b/libuavcan/test/dynamic_memory.cpp index e16d4f2a31..b179211518 100644 --- a/libuavcan/test/dynamic_memory.cpp +++ b/libuavcan/test/dynamic_memory.cpp @@ -100,6 +100,8 @@ TEST(DynamicMemory, LimitedPoolAllocator) uavcan::PoolAllocator<128, 32> pool32; uavcan::LimitedPoolAllocator lim(pool32, 2); + EXPECT_EQ(2, lim.getNumBlocks()); + const void* ptr1 = lim.allocate(1); const void* ptr2 = lim.allocate(1); const void* ptr3 = lim.allocate(1);