...

diff --git a/release-notes/CREDITS b/release-notes/CREDITS
index 855e030..a595d7a 100644
--- a/release-notes/CREDITS
+++ b/release-notes/CREDITS
@@ -780,6 +780,11 @@
     using 'convertValue()' for list of byte[] values.
    [1.8.9]
 
+Matt Schemmel:
+  * Reported [JACKSON-820] WriterBasedGenerator with CharacterEscapes produces
+    unescaped output for strings > 2k in length
+   [1.8.9]
+
 "Programmer Bruce":
   * Suggested these for 1.8.x:
     - [JACKSON-597] Make ClassDeserializer support primitive types [1.8.3]
diff --git a/release-notes/VERSION b/release-notes/VERSION
index 6e76a9a..4654170 100644
--- a/release-notes/VERSION
+++ b/release-notes/VERSION
@@ -22,6 +22,9 @@
   * [JACKSON-806]: REQUIRE_SETTERS_FOR_GETTERS ignores explicitly annotated getters
    (reported by Harold M)
   * [JACKSON-812]: BigIntegerNode.equals(...) using '==' for equality
+  * [JACKSON-820]: WriterBasedGenerator with CharacterEscapes produces unescaped output
+    for strings > 2k in length
+   (reported by Matt S)
 
 ------------------------------------------------------------------------
 === History: ===
diff --git a/src/java/org/codehaus/jackson/impl/WriterBasedGenerator.java b/src/java/org/codehaus/jackson/impl/WriterBasedGenerator.java
index 1ef7e40..1535c08 100644
--- a/src/java/org/codehaus/jackson/impl/WriterBasedGenerator.java
+++ b/src/java/org/codehaus/jackson/impl/WriterBasedGenerator.java
@@ -1191,7 +1191,7 @@
         // And then we'll need to verify need for escaping etc:
         int end = _outputTail + len;
         final int[] escCodes = _outputEscapes;
-        final int escLimit = Math.min(escCodes.length, _maximumNonEscapedChar+1);
+        final int escLimit = Math.min(escCodes.length, maxNonEscaped+1);
         int escCode = 0;
         
         output_loop:
@@ -1227,7 +1227,7 @@
         throws IOException, JsonGenerationException
     {
         final int[] escCodes = _outputEscapes;
-        final int escLimit = Math.min(escCodes.length, _maximumNonEscapedChar+1);
+        final int escLimit = Math.min(escCodes.length, maxNonEscaped+1);
     
         int ptr = 0;
         int escCode = 0;
@@ -1380,7 +1380,7 @@
     {
         final int[] escCodes = _outputEscapes;
         final int maxNonEscaped = (_maximumNonEscapedChar < 1) ? 0xFFFF : _maximumNonEscapedChar;
-        final int escLimit = Math.min(escCodes.length, _maximumNonEscapedChar+1);
+        final int escLimit = Math.min(escCodes.length, maxNonEscaped+1);
         final CharacterEscapes customEscapes = _characterEscapes;
     
         int ptr = 0;