From a49fd7fd57ed9a2a1a40dc0b99942bd1b18db414 Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Tue, 4 Dec 2018 18:39:32 -0500
Subject: [PATCH] yuzu/game_list_worker: Move std::string construction after
 the termination check in callbacks

Avoids potentially allocating a std::string instance when it isn't
needed.
---
 src/yuzu/game_list_worker.cpp | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/yuzu/game_list_worker.cpp b/src/yuzu/game_list_worker.cpp
index 3d8787dd0a..6d41809fbd 100644
--- a/src/yuzu/game_list_worker.cpp
+++ b/src/yuzu/game_list_worker.cpp
@@ -163,13 +163,12 @@ void GameListWorker::AddInstalledTitlesToGameList() {
 void GameListWorker::FillControlMap(const std::string& dir_path) {
     const auto nca_control_callback = [this](u64* num_entries_out, const std::string& directory,
                                              const std::string& virtual_name) -> bool {
-        const std::string physical_name = directory + DIR_SEP + virtual_name;
-
         if (stop_processing) {
             // Breaks the callback loop
             return false;
         }
 
+        const std::string physical_name = directory + DIR_SEP + virtual_name;
         const QFileInfo file_info(QString::fromStdString(physical_name));
         if (!file_info.isDir() && file_info.suffix() == QStringLiteral("nca")) {
             auto nca =
@@ -188,12 +187,13 @@ void GameListWorker::FillControlMap(const std::string& dir_path) {
 void GameListWorker::AddFstEntriesToGameList(const std::string& dir_path, unsigned int recursion) {
     const auto callback = [this, recursion](u64* num_entries_out, const std::string& directory,
                                             const std::string& virtual_name) -> bool {
-        std::string physical_name = directory + DIR_SEP + virtual_name;
-
-        if (stop_processing)
-            return false; // Breaks the callback loop.
+        if (stop_processing) {
+            // Breaks the callback loop.
+            return false;
+        }
 
-        bool is_dir = FileUtil::IsDirectory(physical_name);
+        const std::string physical_name = directory + DIR_SEP + virtual_name;
+        const bool is_dir = FileUtil::IsDirectory(physical_name);
         if (!is_dir &&
             (HasSupportedFileExtension(physical_name) || IsExtractedNCAMain(physical_name))) {
             std::unique_ptr<Loader::AppLoader> loader =
-- 
GitLab