From a63e6f9dfd75f89841817a0185d606da52c7a4a6 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sat, 29 Sep 2018 15:57:40 -0400 Subject: loader: Make the Load() function take a process as a regular reference, not a SharedPtr A process should never require being reference counted in this situation. If the handle to a process is freed before this function is called, it's definitely a bug with our lifetime management, so we can put the requirement in place for the API that the process must be a valid instance. --- src/core/loader/deconstructed_rom_directory.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'src/core/loader/deconstructed_rom_directory.cpp') diff --git a/src/core/loader/deconstructed_rom_directory.cpp b/src/core/loader/deconstructed_rom_directory.cpp index 7e8035d0f..1b198cc5c 100644 --- a/src/core/loader/deconstructed_rom_directory.cpp +++ b/src/core/loader/deconstructed_rom_directory.cpp @@ -86,8 +86,7 @@ FileType AppLoader_DeconstructedRomDirectory::IdentifyType(const FileSys::Virtua return FileType::Error; } -ResultStatus AppLoader_DeconstructedRomDirectory::Load( - Kernel::SharedPtr& process) { +ResultStatus AppLoader_DeconstructedRomDirectory::Load(Kernel::Process& process) { if (is_loaded) { return ResultStatus::ErrorAlreadyLoaded; } @@ -130,10 +129,10 @@ ResultStatus AppLoader_DeconstructedRomDirectory::Load( return ResultStatus::Error32BitISA; } - process->LoadFromMetadata(metadata); + process.LoadFromMetadata(metadata); // Load NSO modules - const VAddr base_address = process->vm_manager.GetCodeRegionBaseAddress(); + const VAddr base_address = process.vm_manager.GetCodeRegionBaseAddress(); VAddr next_load_addr = base_address; for (const auto& module : {"rtld", "main", "subsdk0", "subsdk1", "subsdk2", "subsdk3", "subsdk4", "subsdk5", "subsdk6", "subsdk7", "sdk"}) { @@ -147,7 +146,7 @@ ResultStatus AppLoader_DeconstructedRomDirectory::Load( } } - process->Run(base_address, metadata.GetMainThreadPriority(), metadata.GetMainThreadStackSize()); + process.Run(base_address, metadata.GetMainThreadPriority(), metadata.GetMainThreadStackSize()); // Find the RomFS by searching for a ".romfs" file in this directory const auto& files = dir->GetFiles(); -- cgit v1.2.3