From 4ce49a6195ea872569d316798d71bdde11810ab6 Mon Sep 17 00:00:00 2001 From: Norman Maurer Date: Tue, 22 Oct 2013 20:20:04 +0200 Subject: [PATCH] [#1943] Unpooled.copiedBuffer(ByteBuf pooled) should always return unpooled ByteBuf --- buffer/src/main/java/io/netty/buffer/Unpooled.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/buffer/src/main/java/io/netty/buffer/Unpooled.java b/buffer/src/main/java/io/netty/buffer/Unpooled.java index 6e1654e41c..51c4a32361 100644 --- a/buffer/src/main/java/io/netty/buffer/Unpooled.java +++ b/buffer/src/main/java/io/netty/buffer/Unpooled.java @@ -408,8 +408,16 @@ public final class Unpooled { * respectively. */ public static ByteBuf copiedBuffer(ByteBuf buffer) { - if (buffer.isReadable()) { - return buffer.copy(); + int readable = buffer.readableBytes(); + if (readable > 0) { + ByteBuf copy; + if (buffer.isDirect()) { + copy = directBuffer(readable); + } else { + copy = buffer(readable); + } + copy.writeBytes(buffer, buffer.readerIndex(), readable); + return copy; } else { return EMPTY_BUFFER; }