src/share/classes/java/lang/StringCoding.java

Print this page

        

@@ -220,17 +220,17 @@
             if (!(isTrusted = (cs.getClass().getClassLoader0() == null))) {
                 ba =  Arrays.copyOfRange(ba, off, off + len);
                 off = 0;
             }
         }
+        cd.onMalformedInput(CodingErrorAction.REPLACE)
+          .onUnmappableCharacter(CodingErrorAction.REPLACE)
+          .reset();
         if (cd instanceof ArrayDecoder) {
             int clen = ((ArrayDecoder)cd).decode(ba, off, len, ca);
             return safeTrim(ca, clen, cs, isTrusted);
         } else {
-            cd.onMalformedInput(CodingErrorAction.REPLACE)
-              .onUnmappableCharacter(CodingErrorAction.REPLACE)
-              .reset();
             ByteBuffer bb = ByteBuffer.wrap(ba, off, len);
             CharBuffer cb = CharBuffer.wrap(ca);
             try {
                 CoderResult cr = cd.decode(bb, cb, true);
                 if (!cr.isUnderflow())

@@ -354,17 +354,17 @@
             if (!(isTrusted = (cs.getClass().getClassLoader0() == null))) {
                 ca =  Arrays.copyOfRange(ca, off, off + len);
                 off = 0;
             }
         }
+        ce.onMalformedInput(CodingErrorAction.REPLACE)
+          .onUnmappableCharacter(CodingErrorAction.REPLACE)
+          .reset();
         if (ce instanceof ArrayEncoder) {
             int blen = ((ArrayEncoder)ce).encode(ca, off, len, ba);
             return safeTrim(ba, blen, cs, isTrusted);
         } else {
-            ce.onMalformedInput(CodingErrorAction.REPLACE)
-              .onUnmappableCharacter(CodingErrorAction.REPLACE)
-              .reset();
             ByteBuffer bb = ByteBuffer.wrap(ba);
             CharBuffer cb = CharBuffer.wrap(ca, off, len);
             try {
                 CoderResult cr = ce.encode(cb, bb, true);
                 if (!cr.isUnderflow())