diff options
author | Lioncash <mathew1800@gmail.com> | 2018-09-12 04:51:41 -0400 |
---|---|---|
committer | Lioncash <mathew1800@gmail.com> | 2018-09-12 04:51:44 -0400 |
commit | 9b3bc0b282393a9bf19b4bcb1c2830a879278fbf (patch) | |
tree | bca820ac25a5405a9a1409b082fac6eca397a5b1 /src | |
parent | 04d723baf96e35222c922fb212f92e60f8b7370c (diff) |
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/core/hle/kernel/svc.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index 07a6c4014..0b2a7e3cb 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); |