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.
This commit is contained in:
Lioncash 2018-09-12 04:51:41 -04:00
parent 04d723baf9
commit 9b3bc0b282
1 changed files with 4 additions and 0 deletions

View File

@ -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 /// Used to output a message on a debug hardware unit - does nothing on a retail unit
static void OutputDebugString(VAddr address, u64 len) { static void OutputDebugString(VAddr address, u64 len) {
if (len == 0) {
return;
}
std::string str(len, '\0'); std::string str(len, '\0');
Memory::ReadBlock(address, str.data(), str.size()); Memory::ReadBlock(address, str.data(), str.size());
LOG_DEBUG(Debug_Emulated, "{}", str); LOG_DEBUG(Debug_Emulated, "{}", str);