diff --git a/jctools-core/src/main/java/org/jctools/queues/SpscGrowableArrayQueue.java b/jctools-core/src/main/java/org/jctools/queues/SpscGrowableArrayQueue.java index 478c10f7..8be9b580 100644 --- a/jctools-core/src/main/java/org/jctools/queues/SpscGrowableArrayQueue.java +++ b/jctools-core/src/main/java/org/jctools/queues/SpscGrowableArrayQueue.java @@ -114,7 +114,7 @@ final boolean offerColdPath( long currConsumerIndex = lvConsumerIndex(); // use lookAheadStep to store the consumer distance from final buffer this.lookAheadStep = -(index - currConsumerIndex); - producerBufferLimit = currConsumerIndex + maxCapacity - 1; + producerBufferLimit = currConsumerIndex + maxCapacity; } else { diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/SpscGrowableAtomicArrayQueue.java b/jctools-core/src/main/java/org/jctools/queues/atomic/SpscGrowableAtomicArrayQueue.java index 89a8052e..323d045e 100644 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/SpscGrowableAtomicArrayQueue.java +++ b/jctools-core/src/main/java/org/jctools/queues/atomic/SpscGrowableAtomicArrayQueue.java @@ -106,7 +106,7 @@ final boolean offerColdPath(final AtomicReferenceArray buffer, final long mas long currConsumerIndex = lvConsumerIndex(); // use lookAheadStep to store the consumer distance from final buffer this.lookAheadStep = -(index - currConsumerIndex); - producerBufferLimit = currConsumerIndex + maxCapacity - 1; + producerBufferLimit = currConsumerIndex + maxCapacity; } else { producerBufferLimit = index + producerMask - 1; adjustLookAheadStep(newCapacity);