Fix [JACKSON-889] for 1.9.x

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();
+    }
 }