GetDisplayVersion should return a null-terminated version string.
also, in case of failed to get of the basic version, we will try get it from application update.
This commit is contained in:
parent
9f8e17cb18
commit
7bd3558c64
|
@ -10,6 +10,7 @@
|
||||||
#include "core/core.h"
|
#include "core/core.h"
|
||||||
#include "core/file_sys/control_metadata.h"
|
#include "core/file_sys/control_metadata.h"
|
||||||
#include "core/file_sys/patch_manager.h"
|
#include "core/file_sys/patch_manager.h"
|
||||||
|
#include "core/file_sys/registered_cache.h"
|
||||||
#include "core/file_sys/savedata_factory.h"
|
#include "core/file_sys/savedata_factory.h"
|
||||||
#include "core/hle/ipc_helpers.h"
|
#include "core/hle/ipc_helpers.h"
|
||||||
#include "core/hle/kernel/kernel.h"
|
#include "core/hle/kernel/kernel.h"
|
||||||
|
@ -1353,14 +1354,25 @@ void IApplicationFunctions::GetDisplayVersion(Kernel::HLERequestContext& ctx) {
|
||||||
|
|
||||||
std::array<u8, 0x10> version_string{};
|
std::array<u8, 0x10> version_string{};
|
||||||
|
|
||||||
FileSys::PatchManager pm{system.CurrentProcess()->GetTitleID()};
|
const auto res = [this] {
|
||||||
const auto res = pm.GetControlMetadata();
|
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) {
|
if (res.first != nullptr) {
|
||||||
const auto& version = res.first->GetVersionString();
|
const auto& version = res.first->GetVersionString();
|
||||||
std::copy(version.begin(), version.end(), version_string.begin());
|
std::copy(version.begin(), version.end(), version_string.begin());
|
||||||
} else {
|
} else {
|
||||||
constexpr u128 default_version = {1, 0};
|
constexpr char default_version[]{"1.0.0"};
|
||||||
std::memcpy(version_string.data(), default_version.data(), sizeof(u128));
|
std::memcpy(version_string.data(), default_version, sizeof(default_version));
|
||||||
}
|
}
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 6};
|
IPC::ResponseBuilder rb{ctx, 6};
|
||||||
|
|
Loading…
Reference in New Issue