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-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org