diff options
Diffstat (limited to 'src/core/file_sys')
| -rw-r--r-- | src/core/file_sys/patch_manager.cpp | 15 | ||||
| -rw-r--r-- | src/core/file_sys/patch_manager.h | 5 |
2 files changed, 9 insertions, 11 deletions
diff --git a/src/core/file_sys/patch_manager.cpp b/src/core/file_sys/patch_manager.cpp index b14d7cb0a..019caebe9 100644 --- a/src/core/file_sys/patch_manager.cpp +++ b/src/core/file_sys/patch_manager.cpp | |||
| @@ -345,23 +345,22 @@ std::map<std::string, std::string, std::less<>> PatchManager::GetPatchVersionNam | |||
| 345 | return out; | 345 | return out; |
| 346 | } | 346 | } |
| 347 | 347 | ||
| 348 | std::pair<std::shared_ptr<NACP>, VirtualFile> PatchManager::GetControlMetadata() const { | 348 | std::pair<std::unique_ptr<NACP>, VirtualFile> PatchManager::GetControlMetadata() const { |
| 349 | const auto& installed{Service::FileSystem::GetUnionContents()}; | 349 | const auto& installed{Service::FileSystem::GetUnionContents()}; |
| 350 | 350 | ||
| 351 | const auto base_control_nca = installed->GetEntry(title_id, ContentRecordType::Control); | 351 | const auto base_control_nca = installed->GetEntry(title_id, ContentRecordType::Control); |
| 352 | if (base_control_nca == nullptr) | 352 | if (base_control_nca == nullptr) |
| 353 | return {}; | 353 | return {}; |
| 354 | 354 | ||
| 355 | return ParseControlNCA(base_control_nca); | 355 | return ParseControlNCA(*base_control_nca); |
| 356 | } | 356 | } |
| 357 | 357 | ||
| 358 | std::pair<std::shared_ptr<NACP>, VirtualFile> PatchManager::ParseControlNCA( | 358 | std::pair<std::unique_ptr<NACP>, VirtualFile> PatchManager::ParseControlNCA(const NCA& nca) const { |
| 359 | const std::shared_ptr<NCA>& nca) const { | 359 | const auto base_romfs = nca.GetRomFS(); |
| 360 | const auto base_romfs = nca->GetRomFS(); | ||
| 361 | if (base_romfs == nullptr) | 360 | if (base_romfs == nullptr) |
| 362 | return {}; | 361 | return {}; |
| 363 | 362 | ||
| 364 | const auto romfs = PatchRomFS(base_romfs, nca->GetBaseIVFCOffset(), ContentRecordType::Control); | 363 | const auto romfs = PatchRomFS(base_romfs, nca.GetBaseIVFCOffset(), ContentRecordType::Control); |
| 365 | if (romfs == nullptr) | 364 | if (romfs == nullptr) |
| 366 | return {}; | 365 | return {}; |
| 367 | 366 | ||
| @@ -373,7 +372,7 @@ std::pair<std::shared_ptr<NACP>, VirtualFile> PatchManager::ParseControlNCA( | |||
| 373 | if (nacp_file == nullptr) | 372 | if (nacp_file == nullptr) |
| 374 | nacp_file = extracted->GetFile("Control.nacp"); | 373 | nacp_file = extracted->GetFile("Control.nacp"); |
| 375 | 374 | ||
| 376 | const auto nacp = nacp_file == nullptr ? nullptr : std::make_shared<NACP>(nacp_file); | 375 | auto nacp = nacp_file == nullptr ? nullptr : std::make_unique<NACP>(nacp_file); |
| 377 | 376 | ||
| 378 | VirtualFile icon_file; | 377 | VirtualFile icon_file; |
| 379 | for (const auto& language : FileSys::LANGUAGE_NAMES) { | 378 | for (const auto& language : FileSys::LANGUAGE_NAMES) { |
| @@ -382,6 +381,6 @@ std::pair<std::shared_ptr<NACP>, VirtualFile> PatchManager::ParseControlNCA( | |||
| 382 | break; | 381 | break; |
| 383 | } | 382 | } |
| 384 | 383 | ||
| 385 | return {nacp, icon_file}; | 384 | return {std::move(nacp), icon_file}; |
| 386 | } | 385 | } |
| 387 | } // namespace FileSys | 386 | } // namespace FileSys |
diff --git a/src/core/file_sys/patch_manager.h b/src/core/file_sys/patch_manager.h index eb6fc4607..7d168837f 100644 --- a/src/core/file_sys/patch_manager.h +++ b/src/core/file_sys/patch_manager.h | |||
| @@ -57,11 +57,10 @@ public: | |||
| 57 | 57 | ||
| 58 | // Given title_id of the program, attempts to get the control data of the update and parse it, | 58 | // Given title_id of the program, attempts to get the control data of the update and parse it, |
| 59 | // falling back to the base control data. | 59 | // falling back to the base control data. |
| 60 | std::pair<std::shared_ptr<NACP>, VirtualFile> GetControlMetadata() const; | 60 | std::pair<std::unique_ptr<NACP>, VirtualFile> GetControlMetadata() const; |
| 61 | 61 | ||
| 62 | // Version of GetControlMetadata that takes an arbitrary NCA | 62 | // Version of GetControlMetadata that takes an arbitrary NCA |
| 63 | std::pair<std::shared_ptr<NACP>, VirtualFile> ParseControlNCA( | 63 | std::pair<std::unique_ptr<NACP>, VirtualFile> ParseControlNCA(const NCA& nca) const; |
| 64 | const std::shared_ptr<NCA>& nca) const; | ||
| 65 | 64 | ||
| 66 | private: | 65 | private: |
| 67 | u64 title_id; | 66 | u64 title_id; |