Changeset f97ec88 for router


Ignore:
Timestamp:
Aug 7, 2018 12:04:49 PM (2 years ago)
Author:
slumlord <slumlord@…>
Branches:
master
Children:
9e237b5
Parents:
177ef573
Message:

CachedIteratorCollection? - Fix add() function

File:
1 edited

Legend:

Unmodified
Added
Removed
  • router/java/src/net/i2p/router/util/CachedIteratorCollection.java

    r177ef573 rf97ec88  
    4545
    4646    // FOR DEBUGGING & LOGGING PURPOSES
    47     Log log = I2PAppContext.getGlobalContext().logManager().getLog(CachedIteratorCollection.class);
     47    //Log log = I2PAppContext.getGlobalContext().logManager().getLog(CachedIteratorCollection.class);
    4848
    4949    // Cached Iterator object
     
    8989    @Override
    9090    public boolean add(E element) {
    91         final Node<E> newNode = new Node<>(null, element);
     91        final Node<E> newNode = new Node<>(last, element);
    9292        if (this.size == 0) {
    9393            this.first = newNode;
    94             this.last = newNode;
    9594        } else {
    9695            this.last.next = newNode;
    97             this.last = newNode;
    98         }
     96        }
     97        this.last = newNode;
    9998        this.size++;
    100         log.debug("CachedIteratorAbstractCollection: Element added");
     99        //log.debug("CachedIteratorAbstractCollection: Element added");
    101100        return true;
    102101    }
     
    112111        this.size = 0;
    113112        iterator.reset();
    114         log.debug("CachedIteratorAbstractCollection: Cleared");
     113        //log.debug("CachedIteratorAbstractCollection: Cleared");
    115114    }
    116115
     
    153152        public void remove() {
    154153            if (nextCalled) {
     154                // Are we at the end of the collection? If so itrIndexNode will
     155                // be null
    155156                if (itrIndexNode != null) {
    156                     if (itrIndexNode.prev.prev != null) {
     157                    // The Node we are trying to remove is itrIndexNode.prev
     158                    // Is there a Node before itrIndexNode.prev?
     159                    if (itrIndexNode != first.next) {
     160                        // Set current itrIndexNode's prev to Node N-2
    157161                        itrIndexNode.prev = itrIndexNode.prev.prev;
     162                        // Then set Node N-2's next to current itrIndexNode,
     163                        // this drops all references to the Node being removed
    158164                        itrIndexNode.prev.next = itrIndexNode;
    159165                    } else {
     166                        // There is no N-2 Node, we are removing the first Node
     167                        // in the collection
    160168                        itrIndexNode.prev = null;
    161169                        first = itrIndexNode;
    162170                    }
    163171                } else {
     172                    // itrIndexNode is null, we are at the end of the collection
     173                    // Are there any items before the Node that is being removed?
    164174                    if (last.prev != null) {
    165175                        last.prev.next = null;
    166176                        last = last.prev;
    167177                    } else {
     178                        // There are no more items, clear() the collection
    168179                        nextCalled = false;
    169180                        clear();
    170                         log.debug("CachedIteratorAbstractCollection: Element Removed");
     181                        //log.debug("CachedIteratorAbstractCollection: Element Removed");
    171182                        return;
    172183                    }
     
    174185                size--;
    175186                nextCalled = false;
    176                 log.debug("CachedIteratorAbstractCollection: Element Removed");
     187                //log.debug("CachedIteratorAbstractCollection: Element Removed");
    177188            } else {
    178189                throw new IllegalStateException();
Note: See TracChangeset for help on using the changeset viewer.