summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2019-12-30 10:48:11 +0100
committerLéo Lam <leo@leolam.fr>2020-01-16 00:22:26 +0100
commit89b0ab2d22db510e799e6f9619e8c8e0678f13ef (patch)
treebfab21acea4cfb34c2ad7b9543bce92eb5a4ac79 /Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp
parent1cc7ef356b9a33814efb290368150a1cceb0a3ed (diff)
StringUtil: Add IsPrintableCharacter and use it
Add a function that safely returns whether a character is printable i.e. whether 0x20 <= c <= 0x7e is true. This is done in several places in our codebase and it's easy to run into undefined behaviour if the C version defined in <cctype> is used instead of this one, since its behaviour is undefined if the character is not representable as an unsigned char. This fixes MemoryViewWidget.
Diffstat (limited to 'Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp')
-rw-r--r--Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp b/Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp
index e33a2a8880..5e3d427e96 100644
--- a/Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp
+++ b/Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp
@@ -14,6 +14,7 @@
#include <cctype>
#include <cmath>
+#include "Common/StringUtil.h"
#include "Core/Core.h"
#include "Core/HW/AddressSpace.h"
#include "Core/PowerPC/BreakPoints.h"
@@ -169,8 +170,8 @@ void MemoryViewWidget::Update()
case Type::ASCII:
update_values([&accessors](u32 address) {
const char value = accessors->ReadU8(address);
- return std::isprint(value) ? QString{QChar::fromLatin1(value)} :
- QString{QChar::fromLatin1('.')};
+ return IsPrintableCharacter(value) ? QString{QChar::fromLatin1(value)} :
+ QString{QChar::fromLatin1('.')};
});
break;
case Type::U16: