diff --git a/src/machine/csr/controlstate.h b/src/machine/csr/controlstate.h index 7f5cde29..90918fd9 100644 --- a/src/machine/csr/controlstate.h +++ b/src/machine/csr/controlstate.h @@ -255,16 +255,16 @@ namespace machine { namespace CSR { class RegisterMapByName { bool initialized = false; - std::unordered_map map; + std::unordered_map map; void init() { for (size_t i = 0; i < REGISTERS.size(); i++) { - map.emplace(REGISTERS[i].name, i); + map.emplace(std::string(REGISTERS[i].name), i); } initialized = true; } public: - size_t at(const char* name) { + size_t at(std::string name) { if (!initialized) init(); return map.at(name); } diff --git a/src/machine/instruction.cpp b/src/machine/instruction.cpp index c132096a..f43e1d2b 100644 --- a/src/machine/instruction.cpp +++ b/src/machine/instruction.cpp @@ -1375,7 +1375,7 @@ bool parse_immediate_value( uint16_t parse_csr_address(const QString &field_token, uint &chars_taken) { if (field_token.at(0).isLetter()) { - size_t index = CSR::REGISTER_MAP_BY_NAME.at(qPrintable(field_token)); + size_t index = CSR::REGISTER_MAP_BY_NAME.at(field_token.toStdString()); if (index < 0) { chars_taken = 0; return 0;