Fixed ConcurrentModificationException when using snapshots in the Byte

Viewer.
This commit is contained in:
dragonmacher 2023-03-09 17:49:12 -05:00
parent f56e922d43
commit ee1b1f8df5
3 changed files with 15 additions and 25 deletions

View file

@ -15,9 +15,6 @@
*/ */
package ghidra.app.util.viewer.listingpanel; package ghidra.app.util.viewer.listingpanel;
import java.util.ArrayList;
import java.util.List;
import javax.swing.Icon; import javax.swing.Icon;
import ghidra.app.nav.*; import ghidra.app.nav.*;
@ -34,8 +31,6 @@ import ghidra.util.UniversalIdGenerator;
class DualListingNavigator implements Navigatable { class DualListingNavigator implements Navigatable {
private final ListingPanel listingPanel; private final ListingPanel listingPanel;
private List<NavigatableRemovalListener> listeners =
new ArrayList<>();
private long id; private long id;
private GoToService goToService; private GoToService goToService;
@ -55,7 +50,12 @@ class DualListingNavigator implements Navigatable {
@Override @Override
public void addNavigatableListener(NavigatableRemovalListener listener) { public void addNavigatableListener(NavigatableRemovalListener listener) {
listeners.add(listener); // not used
}
@Override
public void removeNavigatableListener(NavigatableRemovalListener listener) {
// not used
} }
@Override @Override
@ -126,11 +126,6 @@ class DualListingNavigator implements Navigatable {
return true; return true;
} }
@Override
public void removeNavigatableListener(NavigatableRemovalListener listener) {
listeners.remove(listener);
}
@Override @Override
public void requestFocus() { public void requestFocus() {
listingPanel.requestFocus(); listingPanel.requestFocus();

View file

@ -52,7 +52,7 @@ public class ProgramByteViewerComponentProvider extends ByteViewerComponentProvi
protected DecoratorPanel decorationComponent; protected DecoratorPanel decorationComponent;
private WeakSet<NavigatableRemovalListener> navigationListeners = private WeakSet<NavigatableRemovalListener> navigationListeners =
WeakDataStructureFactory.createSingleThreadAccessWeakSet(); WeakDataStructureFactory.createCopyOnWriteWeakSet();
private CloneByteViewerAction cloneByteViewerAction; private CloneByteViewerAction cloneByteViewerAction;
@ -564,9 +564,9 @@ public class ProgramByteViewerComponentProvider extends ByteViewerComponentProvi
} }
} }
protected ByteBlockChangeManager newByteBlockChangeManager(ProgramByteBlockSet blockSet, protected ByteBlockChangeManager newByteBlockChangeManager(ProgramByteBlockSet blocks,
ByteBlockChangeManager bbcm) { ByteBlockChangeManager bbcm) {
return new ByteBlockChangeManager(blockSet, bbcm); return new ByteBlockChangeManager(blocks, bbcm);
} }
protected ProgramByteBlockSet newByteBlockSet(ByteBlockChangeManager changeManager) { protected ProgramByteBlockSet newByteBlockSet(ByteBlockChangeManager changeManager) {

View file

@ -15,9 +15,6 @@
*/ */
package ghidra.feature.vt.gui.duallisting; package ghidra.feature.vt.gui.duallisting;
import java.util.ArrayList;
import java.util.List;
import javax.swing.Icon; import javax.swing.Icon;
import ghidra.app.nav.*; import ghidra.app.nav.*;
@ -33,8 +30,6 @@ public class VTListingNavigator implements Navigatable {
private final ListingCodeComparisonPanel dualListingPanel; private final ListingCodeComparisonPanel dualListingPanel;
private final ListingPanel listingPanel; private final ListingPanel listingPanel;
private List<NavigatableRemovalListener> listeners =
new ArrayList<>();
private long id; private long id;
public VTListingNavigator(ListingCodeComparisonPanel dualListingPanel, public VTListingNavigator(ListingCodeComparisonPanel dualListingPanel,
@ -47,7 +42,12 @@ public class VTListingNavigator implements Navigatable {
@Override @Override
public void addNavigatableListener(NavigatableRemovalListener listener) { public void addNavigatableListener(NavigatableRemovalListener listener) {
listeners.add(listener); // not used
}
@Override
public void removeNavigatableListener(NavigatableRemovalListener listener) {
// not used
} }
@Override @Override
@ -121,11 +121,6 @@ public class VTListingNavigator implements Navigatable {
return true; return true;
} }
@Override
public void removeNavigatableListener(NavigatableRemovalListener listener) {
listeners.remove(listener);
}
@Override @Override
public void requestFocus() { public void requestFocus() {
listingPanel.requestFocus(); listingPanel.requestFocus();