From 9b3bc0b282393a9bf19b4bcb1c2830a879278fbf Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 12 Sep 2018 04:51:41 -0400 Subject: [PATCH] svc: Do nothing if svcOutputDebugString() is given a length of zero While unlikely, it does avoid constructing a std::string and unnecessarily calling into the memory code if a game or executable decides to be really silly about their logging. --- src/core/hle/kernel/svc.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index 07a6c40144..0b2a7e3cb7 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp @@ -274,6 +274,10 @@ static void Break(u64 reason, u64 info1, u64 info2) { /// Used to output a message on a debug hardware unit - does nothing on a retail unit static void OutputDebugString(VAddr address, u64 len) { + if (len == 0) { + return; + } + std::string str(len, '\0'); Memory::ReadBlock(address, str.data(), str.size()); LOG_DEBUG(Debug_Emulated, "{}", str);