You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@harmony.apache.org by "Tim Ellison (JIRA)" <ji...@apache.org> on 2006/02/21 13:06:46 UTC
[jira] Resolved: (HARMONY-90) StringBuffer.setLength(int) doesn't
throw IndexOutOfBoundsException if the argument is negative
[ http://issues.apache.org/jira/browse/HARMONY-90?page=all ]
Tim Ellison resolved HARMONY-90:
--------------------------------
Resolution: Cannot Reproduce
Svetlana,
The test you gave works for me, and I've added it as a regression test.
If you still have this problem let me know and I'll happily re-open the issue.
Tim
> StringBuffer.setLength(int) doesn't throw IndexOutOfBoundsException if the argument is negative
> -----------------------------------------------------------------------------------------------
>
> Key: HARMONY-90
> URL: http://issues.apache.org/jira/browse/HARMONY-90
> Project: Harmony
> Type: Bug
> Components: Classlib
> Reporter: Svetlana Samoilenko
> Assignee: Tim Ellison
>
> According to j2se 1.4.2 and 1.5 specification java.lang.StringBuffer.setLength(int) must throw IndexOutOfBoundsException if the argument is negative
> Code to reproduce:
> public class test2 {
> public static void main(String[] args) throws Exception {
> StringBuffer buffer = new StringBuffer("abcde");
> try {
> buffer.setLength(-1);
> System.out.println("FAIL. IndexOutOfBoundsException must be thrown.");
> } catch (IndexOutOfBoundsException e) {
> System.out.println("PASS. "+e);
> }
> }
> }
> Steps to Reproduce:
> 1. Build Harmony (check-out on 2006-01-30) j2se subset as described in README.txt.
> 2. Compile test2.java using BEA 1.4 javac
> > javac -d . test2.java
> 3. Run java using compatible VM (J9)
> > java -showversion test2
> Output:
> C:\tmp>C:\jrockit-j2sdk1.4.2_04\bin\java.exe -showversion test2
> java version "1.4.2_04"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_04-b05)
> BEA WebLogic JRockit(TM) 1.4.2_04 JVM (build ari-31788-20040616-1132-win-ia32, Native Threads, GC strategy: parallel)
> PASS. java.lang.StringIndexOutOfBoundsException: String index out of range: -1
> C:\tmp>C:\harmony\trunk\deploy\jre\bin\java -showversion test2
> (c) Copyright 1991, 2005 The Apache Software Foundation or its licensors, as applicable.
> FAIL. IndexOutOfBoundsException must be thrown
> Suggected fix:
> Index: trunk/modules/luni/src/main/java/java/lang/StringBuffer.java
> ===================================================================
> --- trunk/modules/luni/src/main/java/java/lang/StringBuffer.java (revision 377365)
> +++ trunk/modules/luni/src/main/java/java/lang/StringBuffer.java (working copy)
> @@ -798,7 +798,10 @@
> * @see #length
> */
> public synchronized void setLength(int length) {
> - if (length > value.length)
> + if (length < 0) {
> + throw new IndexOutOfBoundsException("argument is negative");
> + }
> + if (length > value.length)
> Suggested junit test case:
> ------------------------ StringBufferTest.java -------------------------------------------------
> import junit.framework.*;
> public class StringBufferTest extends TestCase {
> public static void main(String[] args) {
> junit.textui.TestRunner.run(StringBuffer.class);
> }
> public void test_read () {
> StringBuffer buffer = new StringBuffer("abcde");
> try {
> buffer.setLength(-1);
> fail("IndexOutOfBoundsException must be thrown");
> } catch (IndexOutOfBoundsException e) {
> //expected
> }
> }
> }
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira