@@ -60,13 +60,13 @@ final class ExtendedBufferedReader extends UnsynchronizedBufferedReader {
6060 private long bytesReadMark ;
6161
6262 /** Encoder for calculating the number of bytes for each character read. */
63- private CharsetEncoder encoder ;
63+ private final CharsetEncoder encoder ;
6464
6565 /**
6666 * Constructs a new instance using the default buffer size.
6767 */
6868 ExtendedBufferedReader (final Reader reader ) {
69- super (reader );
69+ this (reader , null , false );
7070 }
7171
7272 /**
@@ -80,9 +80,7 @@ final class ExtendedBufferedReader extends UnsynchronizedBufferedReader {
8080 */
8181 ExtendedBufferedReader (final Reader reader , final Charset charset , final boolean trackBytes ) {
8282 super (reader );
83- if (charset != null && trackBytes ) {
84- encoder = charset .newEncoder ();
85- }
83+ encoder = charset != null && trackBytes ? charset .newEncoder () : null ;
8684 }
8785
8886 /**
@@ -137,15 +135,13 @@ private int getEncodedCharLength(final int current) throws CharacterCodingExcept
137135 final char cChar = (char ) current ;
138136 final char lChar = (char ) lastChar ;
139137 if (!Character .isSurrogate (cChar )) {
140- return encoder .encode (
141- CharBuffer .wrap (new char [] {cChar })).limit ();
138+ return encoder .encode (CharBuffer .wrap (new char [] { cChar })).limit ();
142139 }
143140 if (Character .isHighSurrogate (cChar )) {
144141 // Move on to the next char (low surrogate)
145142 return 0 ;
146143 } else if (Character .isSurrogatePair (lChar , cChar )) {
147- return encoder .encode (
148- CharBuffer .wrap (new char [] {lChar , cChar })).limit ();
144+ return encoder .encode (CharBuffer .wrap (new char [] { lChar , cChar })).limit ();
149145 } else {
150146 throw new CharacterCodingException ();
151147 }
0 commit comments