summaryrefslogtreecommitdiffstats
path: root/src/core/loader
diff options
context:
space:
mode:
authorTheKoopaKingdom <thekoopakingdom@gmail.com>2017-03-09 02:21:31 +0100
committerTheKoopaKingdom <thekoopakingdom@gmail.com>2017-06-03 00:28:14 +0200
commit37bec598ea28662462dcaab65d5abd6db8372dbc (patch)
treee1aa020f3884d601182155791d9c474df04fd133 /src/core/loader
parentAdded system for handling core errors in citra-qt. (diff)
downloadyuzu-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.h11
-rw-r--r--src/core/loader/ncch.cpp11
-rw-r--r--src/core/loader/ncch.h5
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;