Fix crashes in Qt debugger caused by trying to select a nonexistent disassembly or memory view

This commit is contained in:
AJR 2021-05-11 14:19:52 -04:00
parent 3955b5c9e9
commit a1c914bef9
2 changed files with 22 additions and 16 deletions

View File

@ -119,8 +119,11 @@ DasmWindow::~DasmWindow()
void DasmWindow::cpuChanged(int index) void DasmWindow::cpuChanged(int index)
{ {
m_dasmView->view()->set_source(*m_dasmView->view()->source(index)); if (index < m_dasmView->view()->source_count())
m_dasmView->viewport()->update(); {
m_dasmView->view()->set_source(*m_dasmView->view()->source(index));
m_dasmView->viewport()->update();
}
} }

View File

@ -169,21 +169,24 @@ MemoryWindow::~MemoryWindow()
void MemoryWindow::memoryRegionChanged(int index) void MemoryWindow::memoryRegionChanged(int index)
{ {
m_memTable->view()->set_source(*m_memTable->view()->source(index)); if (index < m_memTable->view()->source_count())
m_memTable->viewport()->update();
// Update the data format radio buttons to the memory region's default
debug_view_memory *memView = downcast<debug_view_memory*>(m_memTable->view());
switch (memView->get_data_format())
{ {
case 1: dataFormatMenuItem("formatActOne")->setChecked(true); break; m_memTable->view()->set_source(*m_memTable->view()->source(index));
case 2: dataFormatMenuItem("formatActTwo")->setChecked(true); break; m_memTable->viewport()->update();
case 4: dataFormatMenuItem("formatActFour")->setChecked(true); break;
case 8: dataFormatMenuItem("formatActEight")->setChecked(true); break; // Update the data format radio buttons to the memory region's default
case 9: dataFormatMenuItem("formatAct32bitFloat")->setChecked(true); break; debug_view_memory *memView = downcast<debug_view_memory*>(m_memTable->view());
case 10: dataFormatMenuItem("formatAct64bitFloat")->setChecked(true); break; switch (memView->get_data_format())
case 11: dataFormatMenuItem("formatAct80bitFloat")->setChecked(true); break; {
default: break; case 1: dataFormatMenuItem("formatActOne")->setChecked(true); break;
case 2: dataFormatMenuItem("formatActTwo")->setChecked(true); break;
case 4: dataFormatMenuItem("formatActFour")->setChecked(true); break;
case 8: dataFormatMenuItem("formatActEight")->setChecked(true); break;
case 9: dataFormatMenuItem("formatAct32bitFloat")->setChecked(true); break;
case 10: dataFormatMenuItem("formatAct64bitFloat")->setChecked(true); break;
case 11: dataFormatMenuItem("formatAct80bitFloat")->setChecked(true); break;
default: break;
}
} }
} }