From d0da24920b7c0def7d39ef6ccfd341e8fd6d234b Mon Sep 17 00:00:00 2001 From: Adubbz Date: Thu, 15 Aug 2019 20:13:21 +1000 Subject: [PATCH] lr: Imrpoved path handling and adjust ResolveAddOnContentPath order --- .../ncm/source/lr_addoncontentlocationresolver.cpp | 9 +++++---- stratosphere/ncm/source/lr_types.hpp | 11 ++++------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/stratosphere/ncm/source/lr_addoncontentlocationresolver.cpp b/stratosphere/ncm/source/lr_addoncontentlocationresolver.cpp index 4f346968d..3179f7f12 100644 --- a/stratosphere/ncm/source/lr_addoncontentlocationresolver.cpp +++ b/stratosphere/ncm/source/lr_addoncontentlocationresolver.cpp @@ -28,12 +28,13 @@ namespace sts::lr { } std::shared_ptr content_meta_database; - std::shared_ptr content_storage; - R_TRY(ncm::impl::OpenContentMetaDatabase(&content_meta_database, storage_id)); - R_TRY(ncm::impl::OpenContentStorage(&content_storage, storage_id)); - + ncm::ContentId data_content_id; + R_TRY(ncm::impl::OpenContentMetaDatabase(&content_meta_database, storage_id)); R_TRY(content_meta_database->GetLatestData(&data_content_id, tid)); + + std::shared_ptr content_storage; + R_TRY(ncm::impl::OpenContentStorage(&content_storage, storage_id)); R_ASSERT(content_storage->GetPath(&path, data_content_id)); *out.pointer = path; diff --git a/stratosphere/ncm/source/lr_types.hpp b/stratosphere/ncm/source/lr_types.hpp index e0d7df167..1c523acd8 100644 --- a/stratosphere/ncm/source/lr_types.hpp +++ b/stratosphere/ncm/source/lr_types.hpp @@ -30,22 +30,19 @@ namespace sts::lr { } Path(const char* path) { - strlcpy(this->path, path, MaxPathLen); + strncpy(this->path, path, MaxPathLen-1); + this->EnsureNullTerminated(); } Path& operator=(const Path& other) { /* N appears to always memcpy paths, so we will too. */ - memcpy(this->path, other.path, MaxPathLen); + std::memcpy(this->path, other.path, MaxPathLen); this->EnsureNullTerminated(); return *this; } void EnsureNullTerminated() { - const size_t len = strnlen(this->path, MaxPathLen); - - if (len == MaxPathLen) { - path[MaxPathLen-1] = '\0'; - } + path[MaxPathLen-1] = '\0'; } };