diff --git a/Source/Core/DolphinQt/Debugger/MemoryWidget.cpp b/Source/Core/DolphinQt/Debugger/MemoryWidget.cpp index 4c15e92a03..b4ef33fbe5 100644 --- a/Source/Core/DolphinQt/Debugger/MemoryWidget.cpp +++ b/Source/Core/DolphinQt/Debugger/MemoryWidget.cpp @@ -618,12 +618,26 @@ void MemoryWidget::ValidateAndPreviewInputValue() if (input_type != Type::ASCII) input_text.remove(QLatin1Char(' ')); - if (m_base_check->isChecked()) + if (input_type == Type::HexString) { + // Hex strings are parsed using QByteArray::fromHex which doesn't expect a 0x prefix. If the + // user has inserted one, remove it. + if (input_text.startsWith(QStringLiteral("0x"), Qt::CaseInsensitive)) + input_text.remove(0, 2); + } + else if (m_base_check->isChecked()) + { + // Add 0x to the front of the input (after the '-', if present), but only if the user didn't + // already do so. if (input_text.startsWith(QLatin1Char('-'))) - input_text.insert(1, QStringLiteral("0x")); - else + { + if (!input_text.startsWith(QStringLiteral("-0x"), Qt::CaseInsensitive)) + input_text.insert(1, QStringLiteral("0x")); + } + else if (!input_text.startsWith(QStringLiteral("0x"), Qt::CaseInsensitive)) + { input_text.prepend(QStringLiteral("0x")); + } } QFont font;