Fix #255
diff --git a/release-notes/VERSION b/release-notes/VERSION
index 6a2291d..2c6a70a 100644
--- a/release-notes/VERSION
+++ b/release-notes/VERSION
@@ -18,6 +18,7 @@
 
 #253: Add `JsonGenerator. writeEmbeddedObject()` to allow writes of opaque native types
  (suggested by Gregoire C)
+#255: Relax ownership checks for buffers not to require increase in size
 
 2.7.2 (26-Feb-2016)
 
diff --git a/src/main/java/com/fasterxml/jackson/core/io/IOContext.java b/src/main/java/com/fasterxml/jackson/core/io/IOContext.java
index a4675be..18f50c8 100644
--- a/src/main/java/com/fasterxml/jackson/core/io/IOContext.java
+++ b/src/main/java/com/fasterxml/jackson/core/io/IOContext.java
@@ -270,12 +270,17 @@
     }
 
     protected final void _verifyRelease(byte[] toRelease, byte[] src) {
-        if ((toRelease != src) && (toRelease.length <= src.length)) { throw wrongBuf(); }
+        // 07-Mar-2016, tatu: As per [core#255], only prevent shrinking of buffer
+        if ((toRelease != src) && (toRelease.length < src.length)) { throw wrongBuf(); }
     }
 
     protected final void _verifyRelease(char[] toRelease, char[] src) {
-        if ((toRelease != src) && (toRelease.length <= src.length)) { throw wrongBuf(); }
+        // 07-Mar-2016, tatu: As per [core#255], only prevent shrinking of buffer
+        if ((toRelease != src) && (toRelease.length < src.length)) { throw wrongBuf(); }
     }
 
-    private IllegalArgumentException wrongBuf() { return new IllegalArgumentException("Trying to release buffer not owned by the context"); }
+    private IllegalArgumentException wrongBuf() {
+        // sanity check failed; trying to return different, smaller buffer.
+        return new IllegalArgumentException("Trying to release buffer smaller than original");
+    }
 }
diff --git a/src/test/java/com/fasterxml/jackson/core/io/TestIOContext.java b/src/test/java/com/fasterxml/jackson/core/io/TestIOContext.java
index 3bad591..475abb5 100644
--- a/src/test/java/com/fasterxml/jackson/core/io/TestIOContext.java
+++ b/src/test/java/com/fasterxml/jackson/core/io/TestIOContext.java
@@ -24,7 +24,7 @@
         try {
             ctxt.releaseReadIOBuffer(new byte[1]);
         } catch (IllegalArgumentException e) {
-            verifyException(e, "not owned");
+            verifyException(e, "smaller than original");
         }
         // but call with null is a NOP for convenience
         ctxt.releaseReadIOBuffer(null);
@@ -40,7 +40,7 @@
         try {
             ctxt.releaseWriteEncodingBuffer(new byte[1]);
         } catch (IllegalArgumentException e) {
-            verifyException(e, "not owned");
+            verifyException(e, "smaller than original");
         }
         ctxt.releaseWriteEncodingBuffer(null);
 
@@ -55,7 +55,7 @@
         try {
             ctxt.releaseTokenBuffer(new char[1]);
         } catch (IllegalArgumentException e) {
-            verifyException(e, "not owned");
+            verifyException(e, "smaller than original");
         }
         ctxt.releaseTokenBuffer(null);
 
@@ -70,7 +70,7 @@
         try {
             ctxt.releaseConcatBuffer(new char[1]);
         } catch (IllegalArgumentException e) {
-            verifyException(e, "not owned");
+            verifyException(e, "smaller than original");
         }
         ctxt.releaseConcatBuffer(null);
 
@@ -85,7 +85,7 @@
         try {
             ctxt.releaseNameCopyBuffer(new char[1]);
         } catch (IllegalArgumentException e) {
-            verifyException(e, "not owned");
+            verifyException(e, "smaller than original");
         }
         ctxt.releaseNameCopyBuffer(null);
     }