Uploaded image for project: 'Commons Collections'
  1. Commons Collections
  2. COLLECTIONS-104

[collections] Only last element is removeable when CircularFifoBuffer is full

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.1
    • None
    • None
    • None
    • Operating System: Linux
      Platform: PC

    • 33071

    Description

      If the circular fifo buffer is full and you remove an item, that is not the last
      one, it breaks.

      code example:

      import java.io.*;
      import org.apache.commons.collections.buffer.*;

      class Stub {
      public static void main(String[] args)

      { CircularFifoBuffer fifo = new CircularFifoBuffer(5); System.out.println(fifo); fifo.add(new String("1")); System.out.println(fifo); fifo.add(new String("2")); System.out.println(fifo); fifo.add(new String("3")); System.out.println(fifo); fifo.add(new String("4")); System.out.println(fifo); System.out.println("adding 5"); fifo.add(new String("5")); System.out.println(fifo); String six = new String("6"); System.out.println("adding 6"); fifo.add(six); System.out.println(fifo); /* uncomment the following block to avoid problem System.out.println("fifo.isFull?:"+fifo.isFull()); System.out.println("removing 6"); fifo.remove(new String("6")); System.out.println(fifo); */ System.out.println("fifo.isFull?:"+fifo.isFull()); System.out.println("removing 3"); fifo.remove(new String("3")); System.out.println(fifo); System.out.println("removing 4"); fifo.remove(new String("4")); System.out.println(fifo); System.out.println("clearing"); fifo.clear(); System.out.println("removing 4"); fifo.remove(new String("4")); System.out.println(fifo); }

      }

      ==============

      output busted:

      []
      [1]
      [1, 2]
      [1, 2, 3]
      [1, 2, 3, 4]
      adding 5
      [1, 2, 3, 4, 5]
      adding 6
      [2, 3, 4, 5, 6]
      fifo.isFull?:true
      removing 3
      Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
      at
      org.apache.commons.collections.buffer.BoundedFifoBuffer$1.remove(BoundedFifoBuffer.java:347)
      at java.util.AbstractCollection.remove(AbstractCollection.java:255)
      at Stub.main(Stub.java:40)

      Attachments

        Activity

          People

            Unassigned Unassigned
            amir@mathforum.org Amir Tahvildaran
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: