From 1dcd187f5fc58bbe7d58008e600750889cc2c63c Mon Sep 17 00:00:00 2001 From: LogicalJoe Date: Sat, 25 Jul 2026 15:20:01 -0400 Subject: [PATCH] improve common hex format handling in goto address input --- gui/qt/utils.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/gui/qt/utils.cpp b/gui/qt/utils.cpp index 4ad73a05..ebd40cc8 100644 --- a/gui/qt/utils.cpp +++ b/gui/qt/utils.cpp @@ -71,17 +71,23 @@ QString resolveAddressOrEquate(const QString &input, bool *ok) { } QString s = in; - if (s.startsWith(QStringLiteral("0X"))) { - s = s.mid(2); + if (s.startsWith('$')) { + s.remove(0, 1); + } else if (s.startsWith(QStringLiteral("0X"))) { + s.remove(0, 2); + } else if (s.endsWith('H')) { + s.chop(1); } - if (s.isEmpty() || s.length() > 6) { + if (s.isEmpty() || s.toStdString().find_first_not_of("0123456789ABCDEF") != std::string::npos) { return {}; } - if (s.toStdString().find_first_not_of("0123456789ABCDEF") != std::string::npos) { + + bool valid = false; + const uint32_t value = s.toUInt(&valid, 16); + if (!valid || value > 0xFFFFFF) { return {}; } - const auto value = static_cast(hex2int(in)); if (ok) { *ok = true; } return int2hex(value, 6); }