GP-3853 - Version Tracking - fix potential timing exception when

disposing
This commit is contained in:
dragonmacher 2023-09-20 10:51:09 -04:00
parent 0f34531943
commit c94c85157b
2 changed files with 10 additions and 2 deletions

View File

@ -229,6 +229,10 @@ public class VTMatchTableProvider extends ComponentProviderAdapter
private VTMatchTableModel createTableModel() {
matchesTableModel = new VTMatchTableModel(controller);
matchesTableModel.addTableModelListener(e -> {
if (matchesTable == null) {
return; // we've been disposed
}
int filteredCount = matchesTableModel.getRowCount();
int unfilteredCount = matchesTableModel.getUnfilteredRowCount();

View File

@ -168,6 +168,10 @@ public abstract class VTMatchOneToManyTableProvider extends ComponentProviderAda
protected GhidraTable initializeMatchesTable() {
oneToManyTableModel = getMatchesTableModel();
oneToManyTableModel.addTableModelListener(e -> {
if (matchesTable == null) {
return; // we've been disposed
}
if (pendingMatchSelection != null) {
setSelectedMatch(pendingMatchSelection);
}
@ -235,7 +239,7 @@ public abstract class VTMatchOneToManyTableProvider extends ComponentProviderAda
int row = oneToManyTableModel.getRowIndex(match);
if (row < 0) {
pendingMatchSelection = match;
// this happen while reloading. If so, save the match and listen for
// this happen while reloading. If so, save the match and listen for
// the table data changed and restore the selection at that point
return;
}
@ -469,7 +473,7 @@ public abstract class VTMatchOneToManyTableProvider extends ComponentProviderAda
//==================================================================================================
// FilterDialogModel Methods
//==================================================================================================
//==================================================================================================
@Override
public void addFilter(Filter<VTMatch> filter) {