@@ -363,7 +363,8 @@ rebuild_indexes(std::optional<ui_clock::time_point> deadline)
363363 }
364364
365365 if (retval.rir_completed && !retval.rir_rescan_needed ) {
366- std::unordered_map<std::string, std::list<std::shared_ptr<logfile>>>
366+ std::unordered_map<std::string,
367+ std::vector<std::shared_ptr<logfile>>>
367368 id_to_files;
368369 auto reload = false ;
369370
@@ -379,23 +380,25 @@ rebuild_indexes(std::optional<ui_clock::time_point> deadline)
379380 continue ;
380381 }
381382
382- lf.sort ([](const auto & left, const auto & right) {
383- const auto & lst = left->get_stat ();
384- const auto & rst = right->get_stat ();
385- return rst.st_size < lst.st_size
386- || (rst.st_size == lst.st_size
387- && rst.st_mtime < lst.st_mtime );
388- });
389-
390- const auto & dupe_name = lf.front ()->get_unique_path ();
383+ std::sort (lf.begin (),
384+ lf.end (),
385+ [](const auto & left, const auto & right) {
386+ const auto & lst = left->get_stat ();
387+ const auto & rst = right->get_stat ();
388+ return lst.st_size < rst.st_size
389+ || (lst.st_size == rst.st_size
390+ && rst.st_mtime < lst.st_mtime );
391+ });
392+
393+ const auto & dupe_name = lf.back ()->get_unique_path ();
391394 log_info (
392395 " Keeping duplicated file: %s; size=%lld; mtime=%ld; "
393396 " path=%s" ,
394- lf.front ()->get_content_id ().c_str (),
395- lf.front ()->get_stat ().st_size ,
396- lf.front ()->get_stat ().st_mtime ,
397- lf.front ()->get_filename_as_string ().c_str ());
398- lf.pop_front ();
397+ lf.back ()->get_content_id ().c_str (),
398+ lf.back ()->get_stat ().st_size ,
399+ lf.back ()->get_stat ().st_mtime ,
400+ lf.back ()->get_filename_as_string ().c_str ());
401+ lf.pop_back ();
399402 std::for_each (
400403 lf.begin (), lf.end (), [&dupe_name, &reload](auto & lf) {
401404 if (lf->mark_as_duplicate (dupe_name)) {
0 commit comments