diff options
author | TheKoopaKingdom <thekoopakingdom@gmail.com> | 2017-03-09 02:21:31 +0100 |
---|---|---|
committer | TheKoopaKingdom <thekoopakingdom@gmail.com> | 2017-06-03 00:28:14 +0200 |
commit | 37bec598ea28662462dcaab65d5abd6db8372dbc (patch) | |
tree | e1aa020f3884d601182155791d9c474df04fd133 /src/core/loader | |
parent | Added system for handling core errors in citra-qt. (diff) | |
download | yuzu-37bec598ea28662462dcaab65d5abd6db8372dbc.tar yuzu-37bec598ea28662462dcaab65d5abd6db8372dbc.tar.gz yuzu-37bec598ea28662462dcaab65d5abd6db8372dbc.tar.bz2 yuzu-37bec598ea28662462dcaab65d5abd6db8372dbc.tar.lz yuzu-37bec598ea28662462dcaab65d5abd6db8372dbc.tar.xz yuzu-37bec598ea28662462dcaab65d5abd6db8372dbc.tar.zst yuzu-37bec598ea28662462dcaab65d5abd6db8372dbc.zip |
Diffstat (limited to 'src/core/loader')
-rw-r--r-- | src/core/loader/loader.h | 11 | ||||
-rw-r--r-- | src/core/loader/ncch.cpp | 11 | ||||
-rw-r--r-- | src/core/loader/ncch.h | 5 |
3 files changed, 12 insertions, 15 deletions
diff --git a/src/core/loader/loader.h b/src/core/loader/loader.h index 21f73503e..0a2d4a10e 100644 --- a/src/core/loader/loader.h +++ b/src/core/loader/loader.h @@ -8,8 +8,11 @@ #include <initializer_list> #include <memory> #include <string> +#include <utility> #include <vector> + #include <boost/optional.hpp> + #include "common/common_types.h" #include "common/file_util.h" @@ -100,13 +103,11 @@ public: * Loads the system mode that this application needs. * This function defaults to 2 (96MB allocated to the application) if it can't read the * information. - * @param boost::optional<u32> Reference to Boost optional to store system mode. - * @ return Result of operation. + * @return A pair with the system mode (If found) and the result. */ - virtual ResultStatus LoadKernelSystemMode(boost::optional<u32>& system_mode) { + virtual std::pair<boost::optional<u32>, ResultStatus> LoadKernelSystemMode() { // 96MB allocated to the application. - system_mode = 2; - return ResultStatus::Success; + return std::make_pair(2, ResultStatus::Success); } /** diff --git a/src/core/loader/ncch.cpp b/src/core/loader/ncch.cpp index 1a20762e4..ffc019560 100644 --- a/src/core/loader/ncch.cpp +++ b/src/core/loader/ncch.cpp @@ -121,19 +121,16 @@ FileType AppLoader_NCCH::IdentifyType(FileUtil::IOFile& file) { return FileType::Error; } -ResultStatus AppLoader_NCCH::LoadKernelSystemMode(boost::optional<u32>& system_mode) { +std::pair<boost::optional<u32>, ResultStatus> AppLoader_NCCH::LoadKernelSystemMode() { if (!is_loaded) { ResultStatus res = LoadExeFS(); if (res != ResultStatus::Success) { - // Set the system mode as invalid. - system_mode = boost::none; - // Return the error code. - return res; + return std::make_pair(boost::none, res); } } // Set the system mode as the one from the exheader. - system_mode = exheader_header.arm11_system_local_caps.system_mode.Value(); - return ResultStatus::Success; + return std::make_pair(exheader_header.arm11_system_local_caps.system_mode.Value(), + ResultStatus::Success); } ResultStatus AppLoader_NCCH::LoadExec() { diff --git a/src/core/loader/ncch.h b/src/core/loader/ncch.h index 269fe4f49..712d496a4 100644 --- a/src/core/loader/ncch.h +++ b/src/core/loader/ncch.h @@ -179,10 +179,9 @@ public: /** * Loads the Exheader and returns the system mode for this application. - * @param boost::optional<u32> Reference to Boost optional to store system mode. - * @return Result of operation. + * @return A pair with the system mode (If found) and the result. */ - ResultStatus LoadKernelSystemMode(boost::optional<u32>& system_mode) override; + std::pair<boost::optional<u32>, ResultStatus> LoadKernelSystemMode() override; ResultStatus ReadCode(std::vector<u8>& buffer) override; |