more bugs
authorbdemsky <bdemsky@uci.edu>
Sun, 24 Jul 2016 05:09:36 +0000 (22:09 -0700)
committerbdemsky <bdemsky@uci.edu>
Sun, 24 Jul 2016 05:09:36 +0000 (22:09 -0700)
src/java/iotcloud/SlotBuffer.java
src/java/iotcloud/Table.java

index e3ababf..054d4fc 100644 (file)
@@ -43,11 +43,17 @@ class SlotBuffer {
        void putSlot(Slot s) {
                array[head]=s;
                head++;
+               if (head >= array.length)
+                       head=0;
+               
                if (oldestseqn==0)
                        oldestseqn = s.getSequenceNumber();
 
                if (head==tail) {
                        tail++;
+                       if (tail >= array.length)
+                               tail=0;
+                       
                        oldestseqn++;
                }
        }
@@ -64,7 +70,15 @@ class SlotBuffer {
                if (index >= array.length ||
                                index >= head)
                        return null;
+               if (index < 0) {
+                       System.out.println("seqnum="+seqnum);
+                       System.out.println("olestseqn="+oldestseqn);
+                       System.out.println("diff="+diff);
+                       System.out.println("tail="+tail);
 
+
+               }
+               
                return array[index];
        }
 
index d3bac3d..72b4927 100644 (file)
@@ -109,7 +109,8 @@ final public class Table {
                
     if ((numslots - buffer.size()) < FREE_SLOTS) {
       //have to check whether we have enough free slots
-      seqn = buffer.getNewestSeqNum() + 1 - numslots;
+      long fullfirstseqn = buffer.getNewestSeqNum() + 1 - numslots;
+                       seqn = fullfirstseqn < 1 ? 1: fullfirstseqn;
       for(int i=0; i < FREE_SLOTS; i++, seqn++) {
         Slot prevslot=buffer.getSlot(seqn);
         if (!prevslot.isLive())