From 4baf2ea51e38a4fbc78d1ebdd8ebab749148cebf Mon Sep 17 00:00:00 2001 From: Denis Molony Date: Fri, 22 Jul 2016 15:29:37 +1000 Subject: [PATCH] check for nulls --- .../diskbrowser/gui/DiskLayoutSelection.java | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/com/bytezone/diskbrowser/gui/DiskLayoutSelection.java b/src/com/bytezone/diskbrowser/gui/DiskLayoutSelection.java index 3978d4b..3edee15 100755 --- a/src/com/bytezone/diskbrowser/gui/DiskLayoutSelection.java +++ b/src/com/bytezone/diskbrowser/gui/DiskLayoutSelection.java @@ -30,7 +30,7 @@ class DiskLayoutSelection implements Iterable if ((!extend && !append) || highlights.size () == 0) { highlights.clear (); - highlights.add (da); + addHighlight (da); return; } @@ -49,7 +49,7 @@ class DiskLayoutSelection implements Iterable */ if (append) { - highlights.add (da); + addHighlight (da); Collections.sort (highlights); return; } @@ -93,33 +93,39 @@ class DiskLayoutSelection implements Iterable int block = first.getBlock () - 1; if (block < 0) block = totalBlocks - 1; - highlights.add (disk.getDiskAddress (block)); + addHighlight (disk.getDiskAddress (block)); break; case KeyEvent.VK_RIGHT: block = last.getBlock () + 1; if (block >= totalBlocks) block = 0; - highlights.add (disk.getDiskAddress (block)); + addHighlight (disk.getDiskAddress (block)); break; case KeyEvent.VK_UP: block = first.getBlock () - rowSize; if (block < 0) block += totalBlocks; - highlights.add (disk.getDiskAddress (block)); + addHighlight (disk.getDiskAddress (block)); break; case KeyEvent.VK_DOWN: block = last.getBlock () + rowSize; if (block >= totalBlocks) block -= totalBlocks; - highlights.add (disk.getDiskAddress (block)); + addHighlight (disk.getDiskAddress (block)); break; } Collections.sort (highlights); } + private void addHighlight (DiskAddress da) + { + assert da != null; + highlights.add (da); + } + @Override public Iterator iterator () { @@ -135,16 +141,19 @@ class DiskLayoutSelection implements Iterable public boolean isSelected (DiskAddress da) { for (DiskAddress selection : highlights) - if (da.matches (selection)) + if (selection != null && da.matches (selection)) return true; return false; } public void setSelection (List list) { + // for some reason list sometimes contains nulls highlights.clear (); if (list != null) - highlights.addAll (list); + for (DiskAddress da : list) + if (da != null) + highlights.add (da); } private boolean checkContiguous () @@ -172,7 +181,7 @@ class DiskLayoutSelection implements Iterable } for (int i = lo; i <= hi; i++) - highlights.add (disk.getDiskAddress (i)); + addHighlight (disk.getDiskAddress (i)); } private void adjustHighlights (Disk disk, DiskAddress da) @@ -186,6 +195,6 @@ class DiskLayoutSelection implements Iterable } // just treat it like a ctrl-click (hack!!) - highlights.add (da); + addHighlight (da); } } \ No newline at end of file