From 329081fcb7e1d663ab898d805ba24fb42b53db4c Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 6 Oct 2019 13:58:51 -0400 Subject: [PATCH 1/6] boxcat: Silence an unused variable warning On parse errors, we can log out the explanatory string indicating what the parsing error was, rather than just ignoring the variable and returning an overly broad error code. --- src/core/hle/service/bcat/backend/boxcat.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/hle/service/bcat/backend/boxcat.cpp b/src/core/hle/service/bcat/backend/boxcat.cpp index 0e451e9c2f..64022982bf 100644 --- a/src/core/hle/service/bcat/backend/boxcat.cpp +++ b/src/core/hle/service/bcat/backend/boxcat.cpp @@ -495,7 +495,8 @@ Boxcat::StatusResult Boxcat::GetStatus(std::optional& global, } return StatusResult::Success; - } catch (const nlohmann::json::parse_error& e) { + } catch (const nlohmann::json::parse_error& error) { + LOG_ERROR(Service_BCAT, "{}", error.what()); return StatusResult::ParseError; } } From f2fa16b609e12279f81b2e9cf30a43946cce5092 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 6 Oct 2019 14:03:16 -0400 Subject: [PATCH 2/6] bcat: Make ProgressServiceBackend's GetEvent() const This member function doesn't modify internal member state, so it can be marked const. --- src/core/hle/service/bcat/backend/backend.cpp | 2 +- src/core/hle/service/bcat/backend/backend.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/hle/service/bcat/backend/backend.cpp b/src/core/hle/service/bcat/backend/backend.cpp index 9b677debee..2240f4047b 100644 --- a/src/core/hle/service/bcat/backend/backend.cpp +++ b/src/core/hle/service/bcat/backend/backend.cpp @@ -16,7 +16,7 @@ ProgressServiceBackend::ProgressServiceBackend(std::string event_name) : impl{} kernel, Kernel::ResetType::Automatic, "ProgressServiceBackend:UpdateEvent:" + event_name); } -Kernel::SharedPtr ProgressServiceBackend::GetEvent() { +Kernel::SharedPtr ProgressServiceBackend::GetEvent() const { return event.readable; } diff --git a/src/core/hle/service/bcat/backend/backend.h b/src/core/hle/service/bcat/backend/backend.h index 3f5d8b5ddd..762da94e33 100644 --- a/src/core/hle/service/bcat/backend/backend.h +++ b/src/core/hle/service/bcat/backend/backend.h @@ -87,7 +87,7 @@ public: private: explicit ProgressServiceBackend(std::string event_name); - Kernel::SharedPtr GetEvent(); + Kernel::SharedPtr GetEvent() const; DeliveryCacheProgressImpl& GetImpl(); void SignalUpdate() const; From 3fcd2180e4e7060b78ca836b48a34901894502e4 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 6 Oct 2019 14:05:37 -0400 Subject: [PATCH 3/6] bcat: Make ProgressServiceBackend's constructor take a std::string_view Given the string is appended to another, we can make it a view so a redundant full copy of the string isn't made. --- src/core/hle/service/bcat/backend/backend.cpp | 5 +++-- src/core/hle/service/bcat/backend/backend.h | 5 ++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/core/hle/service/bcat/backend/backend.cpp b/src/core/hle/service/bcat/backend/backend.cpp index 2240f4047b..7018d294ae 100644 --- a/src/core/hle/service/bcat/backend/backend.cpp +++ b/src/core/hle/service/bcat/backend/backend.cpp @@ -10,10 +10,11 @@ namespace Service::BCAT { -ProgressServiceBackend::ProgressServiceBackend(std::string event_name) : impl{} { +ProgressServiceBackend::ProgressServiceBackend(std::string_view event_name) : impl{} { auto& kernel{Core::System::GetInstance().Kernel()}; event = Kernel::WritableEvent::CreateEventPair( - kernel, Kernel::ResetType::Automatic, "ProgressServiceBackend:UpdateEvent:" + event_name); + kernel, Kernel::ResetType::Automatic, + std::string("ProgressServiceBackend:UpdateEvent:").append(event_name)); } Kernel::SharedPtr ProgressServiceBackend::GetEvent() const { diff --git a/src/core/hle/service/bcat/backend/backend.h b/src/core/hle/service/bcat/backend/backend.h index 762da94e33..05fd43e670 100644 --- a/src/core/hle/service/bcat/backend/backend.h +++ b/src/core/hle/service/bcat/backend/backend.h @@ -6,6 +6,9 @@ #include #include +#include +#include + #include "common/common_types.h" #include "core/file_sys/vfs_types.h" #include "core/hle/kernel/readable_event.h" @@ -85,7 +88,7 @@ public: void FinishDownload(ResultCode result); private: - explicit ProgressServiceBackend(std::string event_name); + explicit ProgressServiceBackend(std::string_view event_name); Kernel::SharedPtr GetEvent() const; DeliveryCacheProgressImpl& GetImpl(); From 81adf46d1d9622e64ae20119c63e6982c2217d9c Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 6 Oct 2019 14:07:17 -0400 Subject: [PATCH 4/6] bcat: In-class initialize ProgressServiceBackend's impl member Allows us to remove a constructor initializer list. --- src/core/hle/service/bcat/backend/backend.cpp | 2 +- src/core/hle/service/bcat/backend/backend.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/hle/service/bcat/backend/backend.cpp b/src/core/hle/service/bcat/backend/backend.cpp index 7018d294ae..cc64b3a694 100644 --- a/src/core/hle/service/bcat/backend/backend.cpp +++ b/src/core/hle/service/bcat/backend/backend.cpp @@ -10,7 +10,7 @@ namespace Service::BCAT { -ProgressServiceBackend::ProgressServiceBackend(std::string_view event_name) : impl{} { +ProgressServiceBackend::ProgressServiceBackend(std::string_view event_name) { auto& kernel{Core::System::GetInstance().Kernel()}; event = Kernel::WritableEvent::CreateEventPair( kernel, Kernel::ResetType::Automatic, diff --git a/src/core/hle/service/bcat/backend/backend.h b/src/core/hle/service/bcat/backend/backend.h index 05fd43e670..9a63fcbe89 100644 --- a/src/core/hle/service/bcat/backend/backend.h +++ b/src/core/hle/service/bcat/backend/backend.h @@ -95,7 +95,7 @@ private: void SignalUpdate() const; - DeliveryCacheProgressImpl impl; + DeliveryCacheProgressImpl impl{}; Kernel::EventPair event; bool need_hle_lock = false; }; From 7e77d1593fb7c66f23a3f805d728d7c19d50b753 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 6 Oct 2019 14:08:45 -0400 Subject: [PATCH 5/6] bcat: Take std::function instance by value in NullBackend's constructor Without this, the std::move within the constructor initializer list won't be able to actually perform a move. --- src/core/hle/service/bcat/backend/backend.cpp | 2 +- src/core/hle/service/bcat/backend/backend.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/hle/service/bcat/backend/backend.cpp b/src/core/hle/service/bcat/backend/backend.cpp index cc64b3a694..9d6946bc5d 100644 --- a/src/core/hle/service/bcat/backend/backend.cpp +++ b/src/core/hle/service/bcat/backend/backend.cpp @@ -96,7 +96,7 @@ Backend::Backend(DirectoryGetter getter) : dir_getter(std::move(getter)) {} Backend::~Backend() = default; -NullBackend::NullBackend(const DirectoryGetter& getter) : Backend(std::move(getter)) {} +NullBackend::NullBackend(DirectoryGetter getter) : Backend(std::move(getter)) {} NullBackend::~NullBackend() = default; diff --git a/src/core/hle/service/bcat/backend/backend.h b/src/core/hle/service/bcat/backend/backend.h index 9a63fcbe89..51dbd33162 100644 --- a/src/core/hle/service/bcat/backend/backend.h +++ b/src/core/hle/service/bcat/backend/backend.h @@ -131,7 +131,7 @@ protected: // A backend of BCAT that provides no operation. class NullBackend : public Backend { public: - explicit NullBackend(const DirectoryGetter& getter); + explicit NullBackend(DirectoryGetter getter); ~NullBackend() override; bool Synchronize(TitleIDVersion title, ProgressServiceBackend& progress) override; From 0705ce0ed16da57b9ab282980b23c18e815e1f85 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 6 Oct 2019 14:11:28 -0400 Subject: [PATCH 6/6] bcat/module: Silence truncation warnings We need to perform explicit casts here, otherwise we're implicitly truncating a 64-bit type to a 32-bit one. --- src/core/hle/service/bcat/module.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/hle/service/bcat/module.cpp b/src/core/hle/service/bcat/module.cpp index 4c01bcd990..1f21b04344 100644 --- a/src/core/hle/service/bcat/module.cpp +++ b/src/core/hle/service/bcat/module.cpp @@ -451,7 +451,7 @@ private: IPC::ResponseBuilder rb{ctx, 3}; rb.Push(RESULT_SUCCESS); - rb.Push(write_size * sizeof(DeliveryCacheDirectoryEntry)); + rb.Push(static_cast(write_size * sizeof(DeliveryCacheDirectoryEntry))); } void GetCount(Kernel::HLERequestContext& ctx) { @@ -468,7 +468,7 @@ private: IPC::ResponseBuilder rb{ctx, 3}; rb.Push(RESULT_SUCCESS); - rb.Push(files.size()); + rb.Push(static_cast(files.size())); } FileSys::VirtualDir root; @@ -525,7 +525,7 @@ private: IPC::ResponseBuilder rb{ctx, 3}; rb.Push(RESULT_SUCCESS); - rb.Push(size); + rb.Push(static_cast(size)); } FileSys::VirtualDir root;