diff --git a/mina-core/src/main/java/org/apache/mina/core/buffer/IoBuffer.java b/mina-core/src/main/java/org/apache/mina/core/buffer/IoBuffer.java
index 844ca96..0313d79 100644
--- a/mina-core/src/main/java/org/apache/mina/core/buffer/IoBuffer.java
+++ b/mina-core/src/main/java/org/apache/mina/core/buffer/IoBuffer.java
@@ -1545,8 +1545,8 @@
 	 * @return hexidecimal representation of this buffer
 	 */
 	public String getHexDump(int length, boolean pretty) {
-		return (pretty) ? IoBufferHexDumper.getPrettyHexDumpSlice(this, this.position(), length)
-				: IoBufferHexDumper.getHexDumpSlice(this, this.position(), length);
+		return (pretty) ? IoBufferHexDumper.getPrettyHexDumpSlice(this, this.position(), Math.min(this.remaining(), length))
+				: IoBufferHexDumper.getHexDumpSlice(this, this.position(), Math.min(this.remaining(), length));
 	}
 
 	// //////////////////////////////
diff --git a/mina-core/src/main/java/org/apache/mina/core/buffer/IoBufferHexDumper.java b/mina-core/src/main/java/org/apache/mina/core/buffer/IoBufferHexDumper.java
index 14f4582..ef02ed3 100644
--- a/mina-core/src/main/java/org/apache/mina/core/buffer/IoBufferHexDumper.java
+++ b/mina-core/src/main/java/org/apache/mina/core/buffer/IoBufferHexDumper.java
@@ -20,7 +20,6 @@
 package org.apache.mina.core.buffer;
 
 import java.io.UnsupportedEncodingException;
-import java.nio.charset.StandardCharsets;
 
 /**
  * Provides utility methods to dump an {@link IoBuffer} into a hex formatted
diff --git a/mina-core/src/test/java/org/apache/mina/core/buffer/IoBufferHexDumperTest.java b/mina-core/src/test/java/org/apache/mina/core/buffer/IoBufferHexDumperTest.java
index cc47a43..e17b454 100644
--- a/mina-core/src/test/java/org/apache/mina/core/buffer/IoBufferHexDumperTest.java
+++ b/mina-core/src/test/java/org/apache/mina/core/buffer/IoBufferHexDumperTest.java
@@ -16,10 +16,6 @@
 
 		buf.flip();
 
-//	System.out.println(buf.getHexDump());
-//	System.out.println(buf.getHexDump(20));
-//	System.out.println(buf.getHexDump(50));
-
 		/* special case */
 		assertEquals(0, buf.getHexDump(0).length());
 
@@ -28,9 +24,9 @@
 		assertEquals((Math.min(300, buf.limit()) * 3) - 1, buf.getHexDump(300).length());
 
 		/* must truncate */
-		assertEquals((7 * 3) + 2, buf.getHexDump(7).length());
-		assertEquals((10 * 3) + 2, buf.getHexDump(10).length());
-		assertEquals((30 * 3) + 2, buf.getHexDump(30).length());
+		assertEquals((7 * 3) - 1, buf.getHexDump(7).length());
+		assertEquals((10 * 3) - 1, buf.getHexDump(10).length());
+		assertEquals((30 * 3) - 1, buf.getHexDump(30).length());
 
 	}
 
@@ -44,15 +40,7 @@
 
 		buf.flip();
 
-//		System.out.println(buf.getHexDump(0, true));
-//		System.out.println(buf.getHexDump(20, true));
-//		System.out.println(buf.getHexDump(50, true));
-
 		String[] dump = buf.getHexDump(50, true).split("\\n");
-
-		for (String x : dump) {
-			System.out.println(x);
-		}
 		
 		assertEquals(4, dump.length);
 	}
