From 0cab8c117d0fcbe8721569fc678ffc5bbacbe757 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 2269566f2644b09ba20ed5efee9555730ab9e558 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 8d1a3e2fabf07f84e1b8894fc0d12a9ec0d6ae91 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 ca16eb6b49c4f9b4b2492975d94b64573c3715af 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 bf17041e33eef60239259a662e1ce05e2d5c83c5 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 3685b588d0f2d8d2ab964c121ff869ac991af485 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;