| 929 | } |
| 930 | |
| 931 | void MainWindow::breakModified(QTableWidgetItem *item) { |
| 932 | if (item == Q_NULLPTR) { |
| 933 | return; |
| 934 | } |
| 935 | |
| 936 | int row = item->row(); |
| 937 | int col = item->column(); |
| 938 | QString addrStr; |
| 939 | uint32_t addr; |
| 940 | |
| 941 | if (col == BREAK_NAME_COL) { |
| 942 | updateLabels(); |
| 943 | } else if (col == BREAK_ADDR_COL){ |
| 944 | std::string s = item->text().toUpper().toStdString(); |
| 945 | QString equate; |
| 946 | int mask; |
| 947 | |
| 948 | equate = getAddressOfEquate(s); |
| 949 | if (!equate.isEmpty()) { |
| 950 | s = equate.toStdString(); |
| 951 | m_breakpoints->blockSignals(true); |
| 952 | if (m_breakpoints->item(row, BREAK_NAME_COL)->text() == (QStringLiteral("Label") + QString::number(row))) { |
| 953 | m_breakpoints->item(row, BREAK_NAME_COL)->setText(item->text()); |
| 954 | } |
| 955 | m_breakpoints->blockSignals(false); |
| 956 | } |
| 957 | |
| 958 | if (isNotValidHex(s) || s.length() > 6) { |
| 959 | item->setText(m_prevBreakAddr); |
| 960 | return; |
| 961 | } |
| 962 | |
| 963 | addr = static_cast<uint32_t>(hex2int(QString::fromStdString(s))); |
| 964 | addrStr = int2hex(addr, 6); |
| 965 | |
| 966 | m_breakpoints->blockSignals(true); |
| 967 | |
| 968 | // Return if address is already set |
| 969 | for (int i = 0; i < m_breakpoints->rowCount(); i++) { |
| 970 | if (m_breakpoints->item(i, BREAK_ADDR_COL)->text() == addrStr && i != row) { |
| 971 | item->setText(m_prevBreakAddr); |
| 972 | m_breakpoints->blockSignals(false); |
| 973 | return; |
| 974 | } |
| 975 | } |
| 976 | |
| 977 | mask = breakGetMask(row); |
| 978 | |
| 979 | if (m_prevBreakAddr != DEBUG_UNSET_ADDR) { |
| 980 | debug_watch(hex2int(m_prevBreakAddr), DBG_MASK_EXEC, false); |
| 981 | } |
| 982 | item->setText(addrStr); |
| 983 | debug_watch(addr, mask, true); |
| 984 | m_breakpoints->blockSignals(false); |
| 985 | } |
| 986 | disasmUpdate(); |
| 987 | memUpdate(); |
| 988 | } |
nothing calls this directly
no test coverage detected