src/share/classes/java/nio/charset/Charset-X-Coder.java.template

Print this page

        

@@ -32,10 +32,11 @@
 import java.nio.CharBuffer;
 import java.nio.BufferOverflowException;
 import java.nio.BufferUnderflowException;
 import java.lang.ref.WeakReference;
 import java.nio.charset.CoderMalfunctionError;                  // javadoc
+import java.util.Arrays;
 
 
 /**
  * An engine that can transform a sequence of $itypesPhrase$ into a sequence of
  * $otypesPhrase$.

@@ -242,11 +243,16 @@
      *
      * @return  This $coder$'s current replacement,
      *          which is never <tt>null</tt> and is never empty
      */
     public final $replType$ replacement() {
+#if[decoder]
         return replacement;
+#end[decoder]
+#if[encoder]
+        return Arrays.copyOf(replacement, replacement.$replLength$);
+#end[encoder]
     }
 
     /**
      * Changes this $coder$'s replacement value.
      *

@@ -278,16 +284,19 @@
         int len = newReplacement.$replLength$;
         if (len == 0)
             throw new IllegalArgumentException("Empty replacement");
         if (len > max$ItypesPerOtype$)
             throw new IllegalArgumentException("Replacement too long");
+#if[decoder]
+        this.replacement = newReplacement;
+#end[decoder]
 #if[encoder]
         if (!isLegalReplacement(newReplacement))
             throw new IllegalArgumentException("Illegal replacement");
+        this.replacement = Arrays.copyOf(newReplacement, newReplacement.$replLength$);
 #end[encoder]
-        this.replacement = newReplacement;
-        implReplaceWith(newReplacement);
+        implReplaceWith(this.replacement);
         return this;
     }
 
     /**
      * Reports a change to this $coder$'s replacement value.