Ignore:
Timestamp:
2013-09-08T05:14:39+02:00 (11 years ago)
Author:
Don-vip
Message:

Make some more defensive copies of user-supplied arrays, javadoc

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/history/TwoColumnDiff.java

    r5627 r6222  
    88import org.openstreetmap.josm.gui.history.TwoColumnDiff.Item.DiffItemType;
    99import org.openstreetmap.josm.tools.Diff;
     10import org.openstreetmap.josm.tools.Utils;
    1011
    1112/**
     
    5455    Object[] current;
    5556
    56     /**
    57      * The arguments will _not_ be modified
    58      */
    5957    public TwoColumnDiff(Object[] reference, Object[] current) {
    60         this.reference = reference;
    61         this.current = current;
     58        this.reference = Utils.copyArray(reference);
     59        this.current = Utils.copyArray(current);
    6260        referenceDiff = new ArrayList<Item>();
    6361        currentDiff = new ArrayList<Item>();
    6462        diff();
    6563    }
     64   
    6665    private void diff() {
    6766        Diff diff = new Diff(reference, current);
     
    8281            int inserted = script.inserted;
    8382            while(ia < script.line0 && ib < script.line1){
    84                 // System.out.println(" "+a[ia] + "\t "+b[ib]);
    8583                Item cell = new Item(DiffItemType.SAME, a[ia]);
    8684                referenceDiff.add(cell);
     
    9290            while(inserted > 0 || deleted > 0) {
    9391                if(inserted > 0 && deleted > 0) {
    94                     // System.out.println("="+a[ia] + "\t="+b[ib]);
    9592                    referenceDiff.add(new Item(DiffItemType.CHANGED, a[ia++]));
    9693                    currentDiff.add(new Item(DiffItemType.CHANGED, b[ib++]));
    9794                } else if(inserted > 0) {
    98                     // System.out.println("\t+" + b[ib]);
    9995                    referenceDiff.add(new Item(DiffItemType.EMPTY, null));
    10096                    currentDiff.add(new Item(DiffItemType.INSERTED, b[ib++]));
    10197                } else if(deleted > 0) {
    102                     // System.out.println("-"+a[ia]);
    10398                    referenceDiff.add(new Item(DiffItemType.DELETED, a[ia++]));
    10499                    currentDiff.add(new Item(DiffItemType.EMPTY, null));
     
    110105        }
    111106        while(ia < a.length && ib < b.length) {
    112             // System.out.println((ia < a.length ? " "+a[ia]+"\t" : "\t") + (ib < b.length ? " "+b[ib] : ""));
    113107            referenceDiff.add(new Item(DiffItemType.SAME, a[ia++]));
    114108            currentDiff.add(new Item(DiffItemType.SAME, b[ib++]));
Note: See TracChangeset for help on using the changeset viewer.