diff --git a/rtengine/imagedata.cc b/rtengine/imagedata.cc index 47bb0b490..849a7199f 100644 --- a/rtengine/imagedata.cc +++ b/rtengine/imagedata.cc @@ -1113,7 +1113,8 @@ FramesData::FramesData (const Glib::ustring& fname, std::unique_ptr(new FrameData(currFrame, currFrame->getRoot(), roots.at(0)))); + // Note: could leak if emplace_back throws (below as well). Unlikely in practice. + frames.emplace_back(new FrameData(currFrame, currFrame->getRoot(), roots.at(0))); } for (auto currRoot : roots) { rtexif::Tag* t = currRoot->getTag(0x83BB); @@ -1135,7 +1136,7 @@ FramesData::FramesData (const Glib::ustring& fname, std::unique_ptr(new FrameData(currFrame, currFrame->getRoot(), roots.at(0)))); + frames.emplace_back(new FrameData(currFrame, currFrame->getRoot(), roots.at(0))); } rewind (exifManager.f); // Not sure this is necessary iptc = iptc_data_new_from_jpeg_file (exifManager.f); @@ -1153,7 +1154,7 @@ FramesData::FramesData (const Glib::ustring& fname, std::unique_ptr(new FrameData(currFrame, currFrame->getRoot(), roots.at(0)))); + frames.emplace_back(new FrameData(currFrame, currFrame->getRoot(), roots.at(0))); } for (auto currRoot : roots) { rtexif::Tag* t = currRoot->getTag(0x83BB);