You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2013/02/28 23:37:14 UTC

svn commit: r1451408 - in /tomcat/trunk: java/org/apache/tomcat/util/buf/B2CConverter.java test/org/apache/tomcat/util/buf/TestB2CConverter.java

Author: markt
Date: Thu Feb 28 22:37:14 2013
New Revision: 1451408

URL: http://svn.apache.org/r1451408
Log:
Add test for size of leftover buffer and increase buffer size to support more character sets

Modified:
    tomcat/trunk/java/org/apache/tomcat/util/buf/B2CConverter.java
    tomcat/trunk/test/org/apache/tomcat/util/buf/TestB2CConverter.java

Modified: tomcat/trunk/java/org/apache/tomcat/util/buf/B2CConverter.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/buf/B2CConverter.java?rev=1451408&r1=1451407&r2=1451408&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/buf/B2CConverter.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/buf/B2CConverter.java Thu Feb 28 22:37:14 2013
@@ -43,6 +43,9 @@ public class B2CConverter {
     public static final Charset ISO_8859_1;
     public static final Charset UTF_8;
 
+    // Protected so unit tests can use it
+    protected static final int LEFTOVER_SIZE = 9;
+
     static {
         for (Charset charset: Charset.availableCharsets().values()) {
             encodingToCharsetCache.put(
@@ -100,7 +103,7 @@ public class B2CConverter {
     private final ByteBuffer leftovers;
 
     public B2CConverter(String encoding) throws IOException {
-        byte[] left = new byte[4];
+        byte[] left = new byte[LEFTOVER_SIZE];
         leftovers = ByteBuffer.wrap(left);
         decoder = getCharset(encoding).newDecoder();
     }

Modified: tomcat/trunk/test/org/apache/tomcat/util/buf/TestB2CConverter.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/buf/TestB2CConverter.java?rev=1451408&r1=1451407&r2=1451408&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/util/buf/TestB2CConverter.java (original)
+++ tomcat/trunk/test/org/apache/tomcat/util/buf/TestB2CConverter.java Thu Feb 28 22:37:14 2013
@@ -16,6 +16,8 @@
  */
 package org.apache.tomcat.util.buf;
 
+import java.nio.charset.Charset;
+
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -57,4 +59,28 @@ public class TestB2CConverter {
 
         System.out.println(cc);
     }
+
+    @Test
+    public void testLeftoverSize() {
+        float maxLeftover = 0;
+        for (Charset charset : Charset.availableCharsets().values()) {
+            float leftover;
+            if (charset.name().toLowerCase().startsWith("x-")) {
+                // Non-standard charset that browsers won't be using
+                // Likely something used internally by the JRE
+                continue;
+            }
+            try {
+                leftover = charset.newEncoder().maxBytesPerChar();
+            } catch (UnsupportedOperationException uoe) {
+                // Skip it
+                continue;
+            }
+            if (leftover > maxLeftover) {
+                maxLeftover = leftover;
+            }
+        }
+        Assert.assertTrue("Limit needs to be at least " + maxLeftover,
+                maxLeftover <= B2CConverter.LEFTOVER_SIZE);
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org