diff options
| author | Léo Lam <leo@leolam.fr> | 2019-12-30 10:48:11 +0100 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2020-01-16 00:22:26 +0100 |
| commit | 89b0ab2d22db510e799e6f9619e8c8e0678f13ef (patch) | |
| tree | bfab21acea4cfb34c2ad7b9543bce92eb5a4ac79 /Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp | |
| parent | 1cc7ef356b9a33814efb290368150a1cceb0a3ed (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.cpp | 5 |
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: |
