diff --git a/release-notes/VERSION b/release-notes/VERSION
index 8a7494a..cfffe0e 100644
--- a/release-notes/VERSION
+++ b/release-notes/VERSION
@@ -7,6 +7,7 @@
 
 * [JACKSON-887]: StackOverflow with parameterized sub-class field
  (reported by Alexander M)
+* [JACKSON-889]: Parsing error in 'nextFieldName()'
 
 ------------------------------------------------------------------------
 === History: ===
diff --git a/src/java/org/codehaus/jackson/impl/Utf8StreamParser.java b/src/java/org/codehaus/jackson/impl/Utf8StreamParser.java
index 2c3db93..9ff753e 100644
--- a/src/java/org/codehaus/jackson/impl/Utf8StreamParser.java
+++ b/src/java/org/codehaus/jackson/impl/Utf8StreamParser.java
@@ -730,7 +730,7 @@
     {
         // very first thing: common case, colon, value, no white space
         int i;
-        if (_inputPtr < _inputEnd && _inputBuffer[_inputPtr] == INT_COLON) { // fast case first
+        if (_inputPtr < (_inputEnd-1) && _inputBuffer[_inputPtr] == INT_COLON) { // fast case first
             ++_inputPtr;
             i = _inputBuffer[_inputPtr++];
             if (i == INT_QUOTE) {
diff --git a/src/test/org/codehaus/jackson/impl/TestUtf8Parser.java b/src/test/org/codehaus/jackson/impl/TestUtf8Parser.java
index a7c7771..002e683 100644
--- a/src/test/org/codehaus/jackson/impl/TestUtf8Parser.java
+++ b/src/test/org/codehaus/jackson/impl/TestUtf8Parser.java
@@ -3,6 +3,7 @@
 import main.BaseTest;
 
 import org.codehaus.jackson.*;
+import org.codehaus.jackson.io.SerializedString;
 
 import java.io.*;
 import java.util.Random;
@@ -168,4 +169,26 @@
         assertEquals(VALUE, act);
         jp.close();
     }
+
+    // [JACKSON-889]
+    public void testNextFieldName() throws IOException
+    {
+        JsonFactory f = new JsonFactory();
+        SerializedString id = new SerializedString("id");
+
+        ByteArrayOutputStream os = new ByteArrayOutputStream();
+        os.write('{');
+        for (int i = 0; i < 3994; i++) {
+            os.write(' ');
+        }
+        os.write("\"id\":2".getBytes("UTF-8"));
+        os.write('}');
+
+        JsonParser parser = f.createJsonParser(new ByteArrayInputStream(os.toByteArray()));
+        assertEquals(parser.nextToken(), JsonToken.START_OBJECT);
+        assertTrue(parser.nextFieldName(id));
+        assertEquals(parser.nextToken(), JsonToken.VALUE_NUMBER_INT);
+        assertEquals(parser.nextToken(), JsonToken.END_OBJECT);
+        parser.close();
+    }
 }
