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