Skip to content

Commit

Permalink
Safer filling of vectors in EcalDigisFromPortableProducer
Browse files Browse the repository at this point in the history
UBSAN complained that memcpy was being passed a nullptr. Now
use iterator form of vector constructor to do the filling of
the vectors from the PortableHostCollection.
  • Loading branch information
Dr15Jones committed Sep 20, 2024
1 parent 9e7bb37 commit c04b416
Showing 1 changed file with 6 additions and 15 deletions.
21 changes: 6 additions & 15 deletions EventFilter/EcalRawToDigi/plugins/EcalDigisFromPortableProducer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -151,21 +151,12 @@ void EcalDigisFromPortableProducer::produce(edm::Event& event, edm::EventSetup c
auto const digisEEDataSize = digisEESize * ecalPh1::sampleSize;

// Intermediate containers because the DigiCollection containers are accessible only as const
EBDigiCollection::IdContainer digisIdsEB;
EEDigiCollection::IdContainer digisIdsEE;
EBDigiCollection::DataContainer digisDataEB;
EEDigiCollection::DataContainer digisDataEE;

digisIdsEB.resize(digisEBSize);
digisIdsEE.resize(digisEESize);
digisDataEB.resize(digisEBDataSize);
digisDataEE.resize(digisEEDataSize);

// copy data
std::memcpy(digisIdsEB.data(), digisEBSoAView.id(), digisEBSize * sizeof(uint32_t));
std::memcpy(digisIdsEE.data(), digisEESoAView.id(), digisEESize * sizeof(uint32_t));
std::memcpy(digisDataEB.data(), digisEBSoAView.data()->data(), digisEBDataSize * sizeof(uint16_t));
std::memcpy(digisDataEE.data(), digisEESoAView.data()->data(), digisEEDataSize * sizeof(uint16_t));
EBDigiCollection::IdContainer digisIdsEB(digisEBSoAView.id(), digisEBSoAView.id() + digisEBSize);
EEDigiCollection::IdContainer digisIdsEE(digisEESoAView.id(), digisEESoAView.id() + digisEESize);
EBDigiCollection::DataContainer digisDataEB(digisEBSoAView.data()->data(),
digisEBSoAView.data()->data() + digisEBDataSize);
EEDigiCollection::DataContainer digisDataEE(digisEESoAView.data()->data(),
digisEESoAView.data()->data() + digisEEDataSize);

digisEB->swap(digisIdsEB, digisDataEB);
digisEE->swap(digisIdsEE, digisDataEE);
Expand Down

0 comments on commit c04b416

Please sign in to comment.