summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2020-07-08 16:46:56 +0200
committerGitHub <noreply@github.com>2020-07-08 16:46:56 +0200
commit4e2464a713e79b86f819294e5c92ee261d0f81cd (patch)
tree8b4104a920af3988d326e5d94586c8713d3b305a
parentMerge pull request #4245 from MerryMage/page-table-race (diff)
parentGetDisplayVersion should return a null-terminated version string. (diff)
downloadyuzu-4e2464a713e79b86f819294e5c92ee261d0f81cd.tar
yuzu-4e2464a713e79b86f819294e5c92ee261d0f81cd.tar.gz
yuzu-4e2464a713e79b86f819294e5c92ee261d0f81cd.tar.bz2
yuzu-4e2464a713e79b86f819294e5c92ee261d0f81cd.tar.lz
yuzu-4e2464a713e79b86f819294e5c92ee261d0f81cd.tar.xz
yuzu-4e2464a713e79b86f819294e5c92ee261d0f81cd.tar.zst
yuzu-4e2464a713e79b86f819294e5c92ee261d0f81cd.zip
-rw-r--r--src/core/hle/service/am/am.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp
index 1bb544dd8..24cfb370b 100644
--- a/src/core/hle/service/am/am.cpp
+++ b/src/core/hle/service/am/am.cpp
@@ -10,6 +10,7 @@
#include "core/core.h"
#include "core/file_sys/control_metadata.h"
#include "core/file_sys/patch_manager.h"
+#include "core/file_sys/registered_cache.h"
#include "core/file_sys/savedata_factory.h"
#include "core/hle/ipc_helpers.h"
#include "core/hle/kernel/kernel.h"
@@ -1353,14 +1354,25 @@ void IApplicationFunctions::GetDisplayVersion(Kernel::HLERequestContext& ctx) {
std::array<u8, 0x10> version_string{};
- FileSys::PatchManager pm{system.CurrentProcess()->GetTitleID()};
- const auto res = pm.GetControlMetadata();
+ const auto res = [this] {
+ const auto title_id = system.CurrentProcess()->GetTitleID();
+
+ FileSys::PatchManager pm{title_id};
+ auto res = pm.GetControlMetadata();
+ if (res.first != nullptr) {
+ return res;
+ }
+
+ FileSys::PatchManager pm_update{FileSys::GetUpdateTitleID(title_id)};
+ return pm_update.GetControlMetadata();
+ }();
+
if (res.first != nullptr) {
const auto& version = res.first->GetVersionString();
std::copy(version.begin(), version.end(), version_string.begin());
} else {
- constexpr u128 default_version = {1, 0};
- std::memcpy(version_string.data(), default_version.data(), sizeof(u128));
+ constexpr char default_version[]{"1.0.0"};
+ std::memcpy(version_string.data(), default_version, sizeof(default_version));
}
IPC::ResponseBuilder rb{ctx, 6};