From 1cd451cdd818e7df83cf60935abc54345fbc40e6 Mon Sep 17 00:00:00 2001 From: Ferran Balaguer Date: Thu, 22 Aug 2019 14:09:44 +0100 Subject: IVGCVSW-3670 Fix Vts Tests after adding Ref Import functionality Signed-off-by: Ferran Balaguer Change-Id: I87d003ae14575d7d7be67b2a7d00d69ef6201849 --- src/backends/reference/RefTensorHandle.cpp | 11 ++++++++++- src/backends/reference/test/RefTensorHandleTests.cpp | 6 ++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/backends/reference/RefTensorHandle.cpp b/src/backends/reference/RefTensorHandle.cpp index 59ccec6bac..42ac7f0826 100644 --- a/src/backends/reference/RefTensorHandle.cpp +++ b/src/backends/reference/RefTensorHandle.cpp @@ -35,7 +35,10 @@ RefTensorHandle::~RefTensorHandle() if (!m_Pool) { // unmanaged - ::operator delete(m_UnmanagedMemory); + if (!m_Imported) + { + ::operator delete(m_UnmanagedMemory); + } } } @@ -110,6 +113,12 @@ bool RefTensorHandle::Import(void* memory, MemorySource source) // Checks the 16 byte memory alignment. if (reinterpret_cast(memory) % 16) { + if (m_Imported) + { + m_Imported = false; + m_UnmanagedMemory = nullptr; + } + return false; } diff --git a/src/backends/reference/test/RefTensorHandleTests.cpp b/src/backends/reference/test/RefTensorHandleTests.cpp index 8de03cf043..2c5d6d49ec 100644 --- a/src/backends/reference/test/RefTensorHandleTests.cpp +++ b/src/backends/reference/test/RefTensorHandleTests.cpp @@ -54,7 +54,6 @@ BOOST_AUTO_TEST_CASE(CheckSourceType) TensorInfo info({1}, DataType::Float32); RefTensorHandle handle(info, memoryManager, static_cast(MemorySource::Malloc)); - // This pointer will be deleted in the handle destructor int* testPtr = new int(4); // Not supported @@ -65,6 +64,8 @@ BOOST_AUTO_TEST_CASE(CheckSourceType) // Supported BOOST_CHECK(handle.Import(static_cast(testPtr), MemorySource::Malloc)); + + delete testPtr; } BOOST_AUTO_TEST_CASE(ReusePointer) @@ -74,13 +75,14 @@ BOOST_AUTO_TEST_CASE(ReusePointer) TensorInfo info({1}, DataType::Float32); RefTensorHandle handle(info, memoryManager, static_cast(MemorySource::Malloc)); - // This pointer will be deleted in the handle destructor int* testPtr = new int(4); handle.Import(static_cast(testPtr), MemorySource::Malloc); // Reusing previously Imported pointer BOOST_CHECK(handle.Import(static_cast(testPtr), MemorySource::Malloc)); + + delete testPtr; } BOOST_AUTO_TEST_CASE(MisalignedPointer) -- cgit v1.2.1