You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2015/08/28 12:33:02 UTC
svn commit: r1698296 -
/qpid/java/trunk/common/src/main/java/org/apache/qpid/bytebuffer/QpidByteBuffer.java
Author: rgodfrey
Date: Fri Aug 28 10:33:01 2015
New Revision: 1698296
URL: http://svn.apache.org/r1698296
Log:
QPID-6662 : Fix to [r1698241|http://svn.apache.org/r1698241] handling of allocation of buffers
Modified:
qpid/java/trunk/common/src/main/java/org/apache/qpid/bytebuffer/QpidByteBuffer.java
Modified: qpid/java/trunk/common/src/main/java/org/apache/qpid/bytebuffer/QpidByteBuffer.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/common/src/main/java/org/apache/qpid/bytebuffer/QpidByteBuffer.java?rev=1698296&r1=1698295&r2=1698296&view=diff
==============================================================================
--- qpid/java/trunk/common/src/main/java/org/apache/qpid/bytebuffer/QpidByteBuffer.java (original)
+++ qpid/java/trunk/common/src/main/java/org/apache/qpid/bytebuffer/QpidByteBuffer.java Fri Aug 28 10:33:01 2015
@@ -505,32 +505,29 @@ public final class QpidByteBuffer
}
else
{
- List<QpidByteBuffer> collections = new ArrayList<>((size / maxPooledBufferSize)+2);
+ List<QpidByteBuffer> buffers = new ArrayList<>((size / maxPooledBufferSize)+2);
int remaining = size;
QpidByteBuffer buf = _cachedBuffer.get();
- if(buf != null)
+ if(buf == null)
{
- collections.add(buf.slice());
- remaining -= buf.remaining();
- buf.dispose();
+ buf = allocateDirect(maxPooledBufferSize);
}
- while(remaining > maxPooledBufferSize)
+ while(remaining > buf.remaining())
{
- collections.add(allocateDirect(maxPooledBufferSize));
- remaining -= maxPooledBufferSize;
+ buffers.add(buf);
+ remaining -= buf.remaining();
+ buf = allocateDirect(maxPooledBufferSize);
}
- buf = allocateDirect(maxPooledBufferSize);
- collections.add(buf.view(0, remaining));
- buf.position(buf.position()+remaining);
+ buffers.add(buf.view(0, remaining));
+ buf.position(buf.position() + remaining);
- _cachedBuffer.set(buf.slice());
+ _cachedBuffer.set(buf.hasRemaining() ? buf.slice() : allocateDirect(maxPooledBufferSize));
buf.dispose();
- return collections;
-
+ return buffers;
}
-
}
+
public ByteBuffer asByteBuffer()
{
_ref.removeFromPool();
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org