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 2015/12/24 14:29:20 UTC

mina git commit: Fix for DIRMINA-1022

Repository: mina
Updated Branches:
  refs/heads/2.0 d5b52476f -> de419e90e


Fix for DIRMINA-1022

Project: http://git-wip-us.apache.org/repos/asf/mina/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/de419e90
Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/de419e90
Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/de419e90

Branch: refs/heads/2.0
Commit: de419e90e9dbfa9ffafb5157fa373540c64c7889
Parents: d5b5247
Author: Emmanuel Lécharny <el...@symas.com>
Authored: Thu Dec 24 14:28:51 2015 +0100
Committer: Emmanuel Lécharny <el...@symas.com>
Committed: Thu Dec 24 14:28:51 2015 +0100

----------------------------------------------------------------------
 .../org/apache/mina/core/buffer/AbstractIoBuffer.java | 10 ++++------
 .../org/apache/mina/core/buffer/IoBufferTest.java     | 14 ++++++++++++++
 2 files changed, 18 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina/blob/de419e90/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 7d31fbc..183a115 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
@@ -2336,10 +2336,8 @@ public abstract class AbstractIoBuffer extends IoBuffer {
             int r = size & 7;
 
             if (q > 0) {
-                int intValue = value | value << 8 | value << 16 | value << 24;
-                long longValue = intValue;
-                longValue <<= 32;
-                longValue |= intValue;
+                int intValue = value & 0x000000FF | ( value << 8 ) & 0x0000FF00 | ( value << 16 ) & 0x00FF0000 | value << 24;
+                long longValue = intValue & 0x00000000FFFFFFFFL | (long)intValue << 32;
 
                 for (int i = q; i > 0; i--) {
                     putLong(longValue);
@@ -2350,7 +2348,7 @@ public abstract class AbstractIoBuffer extends IoBuffer {
                 r = r & 3;
 
                 if (q > 0) {
-                    int intValue = value | value << 8 | value << 16 | value << 24;
+                    int intValue = value & 0x000000FF | ( value << 8 ) & 0x0000FF00 | ( value << 16 ) & 0x00FF0000 | value << 24;
                     putInt(intValue);
                 }
 
@@ -2358,7 +2356,7 @@ public abstract class AbstractIoBuffer extends IoBuffer {
                     r = r & 1;
 
                     if (q > 0) {
-                        short shortValue = (short) (value | value << 8);
+                        short shortValue = (short) (value & 0x000FF | value << 8);
                         putShort(shortValue);
                     }
 

http://git-wip-us.apache.org/repos/asf/mina/blob/de419e90/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 8c663ca..8b69078 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
@@ -1686,4 +1686,18 @@ public class IoBufferTest {
     {
         
     }
+
+    
+    @Test
+    public void testFillByteSize()
+    {
+        int length = 1024*1020;
+        IoBuffer buffer = IoBuffer.allocate(length);
+        buffer.fill((byte)0x80, length);
+        
+        buffer.flip();
+        for (int i=0; i<length; i++) {
+            assertEquals((byte)0x80, buffer.get());
+        }
+    }
 }