mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	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/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};
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user