diff --git a/plugins/script_loader/source/plugin_script_loader.cpp b/plugins/script_loader/source/plugin_script_loader.cpp index 5e5238886..2c58dd676 100644 --- a/plugins/script_loader/source/plugin_script_loader.cpp +++ b/plugins/script_loader/source/plugin_script_loader.cpp @@ -32,32 +32,33 @@ namespace { scripts.emplace_back(&script); } - std::vector loadAllScripts() { - std::vector scripts; +std::vector loadAllScripts() { + std::vector scripts; - try { - std::apply([&scripts](auto&&... args) { - (loadScript(scripts, args), ...); - }, s_loaders); - } catch (const std::exception &e) { - log::error("Error when loading scripts: {}", e.what()); - } - - { - std::vector features; - for (const auto &script : scripts) { - if (!script->background) - continue; - - features.emplace_back(script->name, true); - } - - IMHEX_PLUGIN_FEATURES = features; - } - - return scripts; + try { + std::apply([&scripts](auto&&... args) { + (loadScript(scripts, std::forward(args)), ...); + }, s_loaders); + } catch (const std::exception &e) { + log::error("Error when loading scripts: {}", e.what()); + return {}; } + std::vector features; + features.reserve(scripts.size()); + + for (const auto &script : scripts) { + if (script->background) { + features.emplace_back(script->name, true); + } + } + + IMHEX_PLUGIN_FEATURES = std::move(features); + + return scripts; +} + + void initializeLoader(u32 &count, auto &loader) { try { if (loader.initialize())