Skip to content

Commit d7cf88d

Browse files
committed
gui: Avoid capturing row index for breakpoint/watchpoint slots
1 parent 00f03f1 commit d7cf88d

File tree

2 files changed

+16
-17
lines changed

2 files changed

+16
-17
lines changed

gui/qt/debugger.cpp

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1074,20 +1074,20 @@ bool MainWindow::breakAdd(const QString &label, uint32_t addr, bool enabled, boo
10741074
btnEnable->setCheckable(true);
10751075
btnEnable->setChecked(enabled);
10761076

1077+
QTableWidgetItem *itemLabel = new QTableWidgetItem(label);
1078+
QTableWidgetItem *itemAddr = new QTableWidgetItem(addrStr);
1079+
QTableWidgetItem *itemBreak = new QTableWidgetItem;
1080+
QTableWidgetItem *itemRemove = new QTableWidgetItem;
1081+
10771082
connect(btnRemove, &QToolButton::clicked, this, &MainWindow::breakRemoveSelected);
1078-
connect(btnEnable, &QToolButton::clicked, [this, btnEnable, row](bool checked) {
1079-
uint32_t addr = static_cast<uint32_t>(hex2int(m_breakpoints->item(row, BREAK_ADDR_COL)->text()));
1083+
connect(btnEnable, &QToolButton::clicked, [this, btnEnable, itemAddr](bool checked) {
1084+
uint32_t addr = static_cast<uint32_t>(hex2int(itemAddr->text()));
10801085
btnEnable->setIcon(checked ? m_iconCheck : m_iconCheckGray);
10811086
debug_watch(addr, DBG_MASK_EXEC, checked);
10821087
disasmUpdate();
10831088
memUpdate();
10841089
});
10851090

1086-
QTableWidgetItem *itemLabel = new QTableWidgetItem(label);
1087-
QTableWidgetItem *itemAddr = new QTableWidgetItem(addrStr);
1088-
QTableWidgetItem *itemBreak = new QTableWidgetItem;
1089-
QTableWidgetItem *itemRemove = new QTableWidgetItem;
1090-
10911091
m_breakpoints->setItem(row, BREAK_NAME_COL, itemLabel);
10921092
m_breakpoints->setItem(row, BREAK_ADDR_COL, itemAddr);
10931093
m_breakpoints->setItem(row, BREAK_ENABLE_COL, itemBreak);
@@ -1463,13 +1463,12 @@ void MainWindow::watchUpdate() {
14631463
}
14641464
}
14651465

1466-
void MainWindow::watchUpdateRow(int row) {
1466+
void MainWindow::watchUpdateRow(QTableWidgetItem *itemLow, QTableWidgetItem *itemHigh) {
14671467

14681468
// this is needed in the case of overlapping address spaces
1469-
if (m_watchpoints->item(row, WATCH_LOW_COL)->text() != DEBUG_UNSET_ADDR &&
1470-
m_watchpoints->item(row, WATCH_HIGH_COL)->text() != DEBUG_UNSET_ADDR) {
1471-
uint32_t low = static_cast<uint32_t>(hex2int(m_watchpoints->item(row, WATCH_LOW_COL)->text()));
1472-
uint32_t high = static_cast<uint32_t>(hex2int(m_watchpoints->item(row, WATCH_HIGH_COL)->text()));
1469+
if (itemLow->text() != DEBUG_UNSET_ADDR && itemHigh->text() != DEBUG_UNSET_ADDR) {
1470+
uint32_t low = static_cast<uint32_t>(hex2int(itemLow->text()));
1471+
uint32_t high = static_cast<uint32_t>(hex2int(itemHigh->text()));
14731472

14741473
for (uint32_t addr = low; addr <= high; addr++) {
14751474
debug_watch(addr, DBG_MASK_READ | DBG_MASK_WRITE, false);
@@ -1534,13 +1533,13 @@ bool MainWindow::watchAdd(const QString& label, uint32_t low, uint32_t high, int
15341533
btnWrite->setCheckable(true);
15351534
btnWrite->setChecked((mask & DBG_MASK_WRITE) ? true : false);
15361535

1537-
connect(btnRead, &QToolButton::clicked, [this, btnRead, row](bool checked) {
1536+
connect(btnRead, &QToolButton::clicked, [this, btnRead, itemLow, itemHigh](bool checked) {
15381537
btnRead->setIcon(checked ? m_iconCheck : m_iconCheckGray);
1539-
watchUpdateRow(row);
1538+
watchUpdateRow(itemLow, itemHigh);
15401539
});
1541-
connect(btnWrite, &QToolButton::clicked, [this, btnWrite, row](bool checked) {
1540+
connect(btnWrite, &QToolButton::clicked, [this, btnWrite, itemLow, itemHigh](bool checked) {
15421541
btnWrite->setIcon(checked ? m_iconCheck : m_iconCheckGray);
1543-
watchUpdateRow(row);
1542+
watchUpdateRow(itemLow, itemHigh);
15441543
});
15451544

15461545
m_watchpoints->setRowCount(row + 1);

gui/qt/mainwindow.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@ private slots:
388388
void watchModified(QTableWidgetItem *item);
389389
void watchSetPrev(QTableWidgetItem *current, QTableWidgetItem *previous);
390390
void watchUpdate();
391-
void watchUpdateRow(int row);
391+
void watchUpdateRow(QTableWidgetItem *itemLow, QTableWidgetItem *itemHigh);
392392
int watchGetMask(int row);
393393

394394
// watchpoint additions

0 commit comments

Comments
 (0)