You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by el...@apache.org on 2014/09/26 12:09:22 UTC
git commit: Fixed the IoBuffer.shrink() methd,
which was looping when the minimal capacity was set to 0.
Repository: mina
Updated Branches:
refs/heads/2.0 c915d1f6f -> 80af8c368
Fixed the IoBuffer.shrink() methd, which was looping when the minimal
capacity was set to 0.
Project: http://git-wip-us.apache.org/repos/asf/mina/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/80af8c36
Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/80af8c36
Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/80af8c36
Branch: refs/heads/2.0
Commit: 80af8c36890f7a25beb35fe01c2b62650414cf0e
Parents: c915d1f
Author: Emmanuel Lécharny <el...@symas.com>
Authored: Fri Sep 26 12:08:56 2014 +0200
Committer: Emmanuel Lécharny <el...@symas.com>
Committed: Fri Sep 26 12:08:56 2014 +0200
----------------------------------------------------------------------
.../mina/core/buffer/AbstractIoBuffer.java | 7 +++++++
.../apache/mina/core/buffer/IoBufferTest.java | 19 +++++++++++++++++++
2 files changed, 26 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mina/blob/80af8c36/mina-core/src/main/java/org/apache/mina/core/buffer/AbstractIoBuffer.java
----------------------------------------------------------------------
diff --git a/mina-core/src/main/java/org/apache/mina/core/buffer/AbstractIoBuffer.java b/mina-core/src/main/java/org/apache/mina/core/buffer/AbstractIoBuffer.java
index 45449db..f88db05 100644
--- a/mina-core/src/main/java/org/apache/mina/core/buffer/AbstractIoBuffer.java
+++ b/mina-core/src/main/java/org/apache/mina/core/buffer/AbstractIoBuffer.java
@@ -304,17 +304,24 @@ public abstract class AbstractIoBuffer extends IoBuffer {
int position = position();
int capacity = capacity();
int limit = limit();
+
if (capacity == limit) {
return this;
}
int newCapacity = capacity;
int minCapacity = Math.max(minimumCapacity, limit);
+
for (;;) {
if (newCapacity >>> 1 < minCapacity) {
break;
}
+
newCapacity >>>= 1;
+
+ if (minCapacity == 0) {
+ break;
+ }
}
newCapacity = Math.max(minCapacity, newCapacity);
http://git-wip-us.apache.org/repos/asf/mina/blob/80af8c36/mina-core/src/test/java/org/apache/mina/core/buffer/IoBufferTest.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/org/apache/mina/core/buffer/IoBufferTest.java b/mina-core/src/test/java/org/apache/mina/core/buffer/IoBufferTest.java
index 4d23a7e..4e85dab 100644
--- a/mina-core/src/test/java/org/apache/mina/core/buffer/IoBufferTest.java
+++ b/mina-core/src/test/java/org/apache/mina/core/buffer/IoBufferTest.java
@@ -1449,4 +1449,23 @@ public class IoBufferTest {
assertEquals(0x02, res.get());
assertEquals(0x03, res.get());
}
+
+ @Test
+ public void testShrink() {
+ IoBuffer buf = IoBuffer.allocate(36);
+ buf.minimumCapacity(0);
+
+ buf.limit(18);
+ buf.shrink();
+ buf.limit(9);
+ buf.shrink();
+ buf.limit(4);
+ buf.shrink();
+ buf.limit(2);
+ buf.shrink();
+ buf.limit(1);
+ buf.shrink();
+ buf.limit(0);
+ buf.shrink();
+ }
}