PROTON-1891: ensure the empty slice rejects appends like non-empty slices do
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/codec/CompositeReadableBuffer.java b/proton-j/src/main/java/org/apache/qpid/proton/codec/CompositeReadableBuffer.java
index f5f2e2a..3780668 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/codec/CompositeReadableBuffer.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/codec/CompositeReadableBuffer.java
@@ -36,7 +36,7 @@
 
     private static final List<byte[]> EMPTY_LIST = Collections.unmodifiableList(new ArrayList<byte[]>());
     private static final ByteBuffer EMPTY_BUFFER = ByteBuffer.wrap(new byte[0]);
-    private static final CompositeReadableBuffer EMPTY_SLICE = new CompositeReadableBuffer(true);
+    private static final CompositeReadableBuffer EMPTY_SLICE = new CompositeReadableBuffer(false);
     private static int UNSET_MARK = -1;
 
     private static final int SHORT_BYTES = 2;
diff --git a/proton-j/src/test/java/org/apache/qpid/proton/codec/CompositeReadableBufferTest.java b/proton-j/src/test/java/org/apache/qpid/proton/codec/CompositeReadableBufferTest.java
index 136f655..4daef3e 100644
--- a/proton-j/src/test/java/org/apache/qpid/proton/codec/CompositeReadableBufferTest.java
+++ b/proton-j/src/test/java/org/apache/qpid/proton/codec/CompositeReadableBufferTest.java
@@ -1940,7 +1940,42 @@
     }
 
     @Test
-    public void testSliceIgnoresAppends() {
+    public void testSliceWithNoRemainderRefusesAppends() {
+        CompositeReadableBuffer buffer = new CompositeReadableBuffer();
+        buffer.append(new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9});
+
+        // Empty slice at end of buffer
+        assertEquals(10, buffer.remaining());
+        buffer.position(10);
+        assertEquals(0, buffer.remaining());
+
+        CompositeReadableBuffer emptySlice = buffer.slice();
+        assertNotSame(buffer, emptySlice);
+        assertEquals(0, emptySlice.remaining());
+
+        try {
+            emptySlice.append(new byte[] { 10 });
+            fail("Should not be allowed to append to empty slice, must throw IllegalStateException");
+        } catch (IllegalStateException ise) {}
+
+        // Empty slice at start of buffer
+        buffer.position(0);
+        assertEquals(10, buffer.remaining());
+        buffer.limit(0);
+        assertEquals(0, buffer.remaining());
+
+        emptySlice = buffer.slice();
+        assertNotSame(buffer, emptySlice);
+        assertEquals(0, emptySlice.remaining());
+
+        try {
+            emptySlice.append(new byte[] { 10 });
+            fail("Should not be allowed to append to empty slice, must throw IllegalStateException");
+        } catch (IllegalStateException ise) {}
+    }
+
+    @Test
+    public void testSliceRefusesAppends() {
         CompositeReadableBuffer buffer = new CompositeReadableBuffer();
         buffer.append(new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9});
 
@@ -1950,7 +1985,7 @@
 
         try {
             slice.append(new byte[] { 10 });
-            fail("Should not be allowed to append to a slice, must throw ReadOnlyBufferException");
+            fail("Should not be allowed to append to a slice, must throw IllegalStateException");
         } catch (IllegalStateException ise) {}
     }