diff --git a/include/podio/SIOBlockUserData.h b/include/podio/SIOBlockUserData.h index 4d3110fba..5921ef018 100644 --- a/include/podio/SIOBlockUserData.h +++ b/include/podio/SIOBlockUserData.h @@ -47,12 +47,11 @@ class SIOBlockUserData : public podio::SIOBlock { .createBuffers(podio::userDataCollTypeName(), sio::version::major_version(version), false) .value(); - auto* dataVec = new std::vector(); + auto* dataVec = m_buffers.dataAsVector(); unsigned size(0); device.data(size); dataVec->resize(size); podio::handlePODDataSIO(device, &(*dataVec)[0], size); - m_buffers.data = dataVec; } void write(sio::write_device& device) override { diff --git a/include/podio/SIOFrameData.h b/include/podio/SIOFrameData.h index 95b09d927..dd2dddb20 100644 --- a/include/podio/SIOFrameData.h +++ b/include/podio/SIOFrameData.h @@ -23,7 +23,7 @@ class SIOFrameData { public: SIOFrameData() = delete; - ~SIOFrameData() = default; + ~SIOFrameData(); SIOFrameData(const SIOFrameData&) = delete; SIOFrameData& operator=(const SIOFrameData&) = delete; diff --git a/src/SIOFrameData.cc b/src/SIOFrameData.cc index 806639672..5615463a0 100644 --- a/src/SIOFrameData.cc +++ b/src/SIOFrameData.cc @@ -100,4 +100,13 @@ void SIOFrameData::readIdTable() { m_subsetCollectionBits = idTableBlock->getSubsetCollectionBits(); } +SIOFrameData::~SIOFrameData() { + for (size_t i = 1; i < m_blocks.size(); ++i) { + if (m_availableBlocks[i]) { + auto buffers = dynamic_cast(m_blocks[i].get())->getBuffers(); + buffers.deleteBuffers(buffers); + } + } +} + } // namespace podio diff --git a/tests/CTestCustom.cmake b/tests/CTestCustom.cmake index 9b8a58ced..f87ae17ab 100644 --- a/tests/CTestCustom.cmake +++ b/tests/CTestCustom.cmake @@ -89,8 +89,6 @@ if ((NOT "@FORCE_RUN_ALL_TESTS@" STREQUAL "ON") AND (NOT "@USE_SANITIZER@" STREQ read_and_write_sio write_timed_sio read_timed_sio - read_frame_sio - read_interface_sio read_frame_legacy_sio read_and_write_frame_sio )