You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by hi...@apache.org on 2006/11/02 16:18:00 UTC

svn commit: r470381 - in /incubator/harmony/enhanced/classlib/trunk/modules/luni/src: main/java/java/lang/String.java test/java/org/apache/harmony/luni/tests/java/lang/String2Test.java

Author: hindessm
Date: Thu Nov  2 07:17:59 2006
New Revision: 470381

URL: http://svn.apache.org/viewvc?view=rev&rev=470381
Log:
Applied patch from "[#HARMONY-1111] [classlib][lang] unexpected
IllegalArgumentException for String(byte[], int, int, String)".

Modified:
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/String.java
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/String2Test.java

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/String.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/String.java?view=diff&rev=470381&r1=470380&r2=470381
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/String.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/String.java Thu Nov  2 07:17:59 2006
@@ -360,8 +360,14 @@
             Charset charset = getCharset(encoding);
 
             int result;
-            CharBuffer cb = charset
-                    .decode(ByteBuffer.wrap(data, start, length));
+        	CharBuffer cb;
+            try {
+            	cb = charset.decode(ByteBuffer.wrap(data, start, length));
+            } catch (Exception e) {
+            	// do nothing. according to spec: 
+            	// behavior is unspecified for invalid array
+            	cb = CharBuffer.wrap("\u003f".toCharArray());
+            }
             if ((result = cb.length()) > 0) {
                 value = cb.array();
                 count = result;

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/String2Test.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/String2Test.java?view=diff&rev=470381&r1=470380&r2=470381
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/String2Test.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/String2Test.java Thu Nov  2 07:17:59 2006
@@ -103,7 +103,7 @@
 	/**
 	 * @tests java.lang.String#String(byte[], int, int, java.lang.String)
 	 */
-	public void test_Constructor$BIILjava_lang_String() {
+	public void test_Constructor$BIILjava_lang_String() throws Exception {
 		// Test for method java.lang.String(byte [], int, int, java.lang.String)
 		String s = null;
 		try {
@@ -112,6 +112,8 @@
 			fail("Threw exception : " + e.getMessage());
 		}
 		assertTrue("Incorrect string returned: " + s, s.equals("ABCDE"));
+		//Regression for HARMONY-1111
+		assertNotNull(new String(new byte[] {(byte)0xC0}, 0, 1, "UTF-8"));
 	}
 
 	/**