diff --git a/libuavcan/include/uavcan/internal/transport/transfer_buffer.hpp b/libuavcan/include/uavcan/internal/transport/transfer_buffer.hpp index 0bdd18c8db..b53382989f 100644 --- a/libuavcan/include/uavcan/internal/transport/transfer_buffer.hpp +++ b/libuavcan/include/uavcan/internal/transport/transfer_buffer.hpp @@ -96,6 +96,11 @@ public: IsDynamicallyAllocatable::check(); } + ~DynamicTransferBuffer() + { + resetImpl(); + } + int read(unsigned int offset, uint8_t* data, unsigned int len) const; int write(unsigned int offset, const uint8_t* data, unsigned int len); }; diff --git a/libuavcan/test/transport/transfer_buffer.cpp b/libuavcan/test/transport/transfer_buffer.cpp index c6629f1f2f..dbd6a65567 100644 --- a/libuavcan/test/transport/transfer_buffer.cpp +++ b/libuavcan/test/transport/transfer_buffer.cpp @@ -183,8 +183,8 @@ TEST(DynamicTransferBuffer, Basic) ASSERT_EQ(21, buf.write(0, test_data_ptr, 21)); ASSERT_TRUE(matchAgainstTestData(buf, 0)); - // Reset + // Destroying the object; memory should be released ASSERT_LT(0, pool.getNumUsedBlocks()); - buf.reset(); + buf.~DynamicTransferBuffer(); ASSERT_EQ(0, pool.getNumUsedBlocks()); }