From a3e5e4876cf6ddb28e9896867517759fba4146ef Mon Sep 17 00:00:00 2001 From: Norman Maurer Date: Sat, 8 Feb 2020 17:05:26 +0100 Subject: [PATCH] FixedCompositeByteBuf.isDirect() may return wrong value when constructed with empty array (#10005) Motivation: FixedCompositeByteBuf.isDirect() should return the same value as EMPTY_BUFFER.isDirect() when constructed via an empty array Modifications: - Return correct value when constructed via empty array. - Add unit test Result: FixedCompositeByteBuf.isDirect() returns correct value --- .../src/main/java/io/netty/buffer/FixedCompositeByteBuf.java | 2 +- .../test/java/io/netty/buffer/FixedCompositeByteBufTest.java | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/buffer/src/main/java/io/netty/buffer/FixedCompositeByteBuf.java b/buffer/src/main/java/io/netty/buffer/FixedCompositeByteBuf.java index 08c8d7fc6a..c28af6f967 100644 --- a/buffer/src/main/java/io/netty/buffer/FixedCompositeByteBuf.java +++ b/buffer/src/main/java/io/netty/buffer/FixedCompositeByteBuf.java @@ -49,7 +49,7 @@ final class FixedCompositeByteBuf extends AbstractReferenceCountedByteBuf { order = ByteOrder.BIG_ENDIAN; nioBufferCount = 1; capacity = 0; - direct = false; + direct = Unpooled.EMPTY_BUFFER.isDirect(); } else { ByteBuf b = buffers[0]; this.buffers = buffers; diff --git a/buffer/src/test/java/io/netty/buffer/FixedCompositeByteBufTest.java b/buffer/src/test/java/io/netty/buffer/FixedCompositeByteBufTest.java index b6260f7848..a564bf1ce2 100644 --- a/buffer/src/test/java/io/netty/buffer/FixedCompositeByteBufTest.java +++ b/buffer/src/test/java/io/netty/buffer/FixedCompositeByteBufTest.java @@ -432,10 +432,12 @@ public class FixedCompositeByteBufTest { } @Test - public void testHasArrayWhenEmpty() { + public void testHasArrayWhenEmptyAndIsDirect() { ByteBuf buf = newBuffer(new ByteBuf[0]); assertTrue(buf.hasArray()); assertArrayEquals(EMPTY_BUFFER.array(), buf.array()); + assertEquals(EMPTY_BUFFER.isDirect(), buf.isDirect()); + assertEquals(EMPTY_BUFFER.memoryAddress(), buf.memoryAddress()); buf.release(); }