You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Denis Kishenko (JIRA)" <ji...@apache.org> on 2006/08/01 14:38:14 UTC

[jira] Updated: (HARMONY-1031) [classlib][text]compatibility: Bidi expected IAE

     [ http://issues.apache.org/jira/browse/HARMONY-1031?page=all ]

Denis Kishenko updated HARMONY-1031:
------------------------------------

    Attachment: Bidi.patch

patch

> [classlib][text]compatibility: Bidi expected IAE
> ------------------------------------------------
>
>                 Key: HARMONY-1031
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1031
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>            Reporter: Denis Kishenko
>         Attachments: Bidi.patch, BidiTest.patch
>
>
> 1. Compatibility bug in java.text.Bidi.reorderVisually(byte[], int, Object[],int,int)
>  - RI throws IAE while Harmony throws NegativeArrayException if last parameter is negative 
> 2. Compatibility bug java.text.Bidi(char[] text, int textStart, byte[] embeddings, int embStart, int paragraphLength, int flags)
> - RI throws IAE while Harmony throws ArrayIndexOutOfBoundsException if textStart <0
> - RI throws IAE while Harmony throws nothing if embStart <0
> - RI throws IAE while Harmony throws NegativeArraySizeException if paragraphLength <0
> - RI throws IAE while Harmony throws OutOfMemoryError if paragraphLength= Integer.MAX_VALUE
> - RI throws nothing while Harmony throws NPE if embStart= flags and paragraphLength=0.
> Test: 1 =======================================================================
> import java.text.*;
> public class test3 {
> public static void main (String[] args) {
>        Bidi bidi=null;
>        String par="asdfghsafl;";
>        AttributedString paragraph = new AttributedString("Paragraph of text|
> txet of hpargarap");
>        try {
>         bidi = new Bidi( paragraph.getIterator());
>             }
>         catch (Exception e) {
>                 System.out.println ("new Bidi" + e);
>         }
>         Object[] oa= new Object[] {new String("testString")};
>         byte[] levels = new byte[]{(byte)0xFF};
>         int levelStart = 1;
>         int Start = 1;
>         int count = -1;
>         try{
>              bidi.reorderVisually(levels, levelStart, oa, Start, count);
>         return;
>         }
>         catch (IllegalArgumentException e) {e.printStackTrace(); 
> System.out.println("passed");
>         }
>         catch (NegativeArraySizeException e) {e.printStackTrace(); 
> System.out.println("failed");
>         }       
> }
> }
> Output:
> ----------------------------------------------------------------jrockit-jdk1.5.0_03: 
> java.lang.IllegalArgumentException: count -2 must be >= 0
> 	at java.text.Bidi.reorderVisually(Bidi.java:520)
> 	at bug9267.main(bug9267.java:26)
> passed
> ----------------------------------------------------------------Harmony
> java.lang.NegativeArraySizeException
> 	at java.text.Bidi.reorderVisually(Bidi.java:428)
> 	at bug9267.main(bug9267.java:26)
> failed
> Test: 2 =======================================================================
> import java.text.Bidi;
> import java.util.Set;
> import java.text.AttributedCharacterIterator;
> import java.util.Map;
> public class test  { 
>     public static void main (String[] args) { 
>        // RI throws IAE while Harmony throws ArrayIndexOutOfBoundsException if
> textStart <0
>        try {                                                                    
>            new Bidi(new char[] { 't','t','t'},-1,new byte[] { 2, 2 },1,1,1);
>        } catch (Exception e) {
>            e.printStackTrace();
>        }
>        // RI throws IAE while Harmony throws nothing if embStart <0
>        try {                                                                    
>            new Bidi(new char[] { 't','t','t'}, 1, new byte[] { 2, 2 }, -1,1,1
> );
>        } catch (Exception e) {
>            e.printStackTrace();
>        }
>        // RI throws IAE while Harmony throws NegativeArraySizeException if
> paragraphLength <0 
>        try {                                                                    
>            new Bidi(new char[] { 't','t','t'}, 1, new byte[] { 2, 2 }, 1,-1,1
> );
>        } catch (Exception e) {
>            e.printStackTrace();
>        } 
>        // RI throws IAE while Harmony throws OutOfMemoryError if
> paragraphLength= Integer.MAX_VALUE 
>        try {                                                                    
>            new Bidi(new char[] {}, 5, new byte[] { 2, 2,2,2,2,2 },
> 8,Integer.MAX_VALUE,5 );
>        } catch (Exception e) {
>            e.printStackTrace();
>        }
>        // RI throws  nothing while Harmony throws NPE if embStart= flags and
> paragraphLength=0.
>        try {                                                                    
>            new Bidi(new char[] {'o'}, 0, new byte[] { 2, 2}, 2, 0, 2 );
>        } catch (Exception e) {
>            e.printStackTrace();
>        }
>     }
> }
> Output 
> ----------------------------------------------------------------jrockit-jdk1.5.0_03
> java.lang.IllegalArgumentException: bad range: -1 length: 2 for text of length: 3
> 	at java.text.Bidi.<init>(Bidi.java:218)
> 	at bug9287.main(bug9287.java:13)
> java.lang.IllegalArgumentException: bad range: -1 length: 2 for embeddings of length: 3
> 	at java.text.Bidi.<init>(Bidi.java:223)
> 	at bug9287.main(bug9287.java:19)
> java.lang.IllegalArgumentException: bad length: -1
> 	at java.text.Bidi.<init>(Bidi.java:215)
> 	at bug9287.main(bug9287.java:26)
> java.lang.IllegalArgumentException: bad range: 5 length: 2147483647 for text of length: 0
> 	at java.text.Bidi.<init>(Bidi.java:218)
> 	at bug9287.main(bug9287.java:34)
> ----------------------------------------------------------------Harmony
> java.lang.ArrayIndexOutOfBoundsException: bad arrayCopy
> 	at java.lang.VMMemoryManager.arrayCopy()
> 	at java.lang.System.arraycopy()
> 	at java.text.Bidi.createUBiDi(Bidi.java:183)
> 	at java.text.Bidi.<init>(Bidi.java:144)
> 	at bug9287.main(bug9287.java:13)
> java.lang.NegativeArraySizeException
> 	at java.text.Bidi.createUBiDi(Bidi.java:182)
> 	at java.text.Bidi.<init>(Bidi.java:144)
> 	at bug9287.main(bug9287.java:26)
> java.lang.OutOfMemoryError: VM doesn't support arrays of the requested size
> 	at java.text.Bidi.createUBiDi(Bidi.java:182)
> 	at java.text.Bidi.<init>(Bidi.java:144)
> java.lang.NullPointerException: bad arrayCopy
> 	at java.lang.VMMemoryManager.arrayCopy()
> 	at java.lang.System.arraycopy()
> 	at java.text.Bidi.createUBiDi(Bidi.java:193)
> 	at java.text.Bidi.<init>(Bidi.java:144)
> 	at bug9287.main(bug9287.java:40)
> 	at bug9287.main(bug9287.java:34)

-- 
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