text/BidiWrapper issue?
-----------------------

         Key: HARMONY-100
         URL: http://issues.apache.org/jira/browse/HARMONY-100
     Project: Harmony
        Type: Bug
    Reporter: Vladimir Gorr


Let's consider the following test:

import java.text.Bidi;
public class Test {
        public static void main(String[] args) throws Exception {
                Bidi bd = new Bidi(new char[] { 's', 's', 's' }, 0, 
                                new byte[] { (byte) -7, (byte) -2, (byte) -3 }, 
                                0, 3, Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
                System.out.println("Expected 7, real " + "     " + 
bd.getLevelAt(0));
        }
}

In my opinion the JNI implementation of Bidi (text/BidiWrapper.c file, 
ubidi_1setPara() function) contains a potential bug, namely:
1. If  the embeddingLevels  argument is not NULL then _embeddingLevels variable 
is initialized with the JNI GetByteArrayElements() function;
2. ICU function (ubidi_setPara) initializes ICU inner structure and puts the 
_embeddingLevels into it;
3. If _embeddingLevels pointer is not NULL then the JNI 
ReleaseByteArrayElements() function (with 0 as fourth parameter) is called.
    This function releases the memory (according to JNI specification) the 
_embeddingLevels pointer refers to;
4. After that ICU inner structure isn't initialized properly. Call of ICU 
ubidi_getLevels() function can return incorrect values (see java test above).

It seems the JNI_COMMIT parameter instead of "0" should be passed to the 
ReleaseByteArrayElements() to avoid this problem.

I'd like to underline the test mentioned above works w/o any issues for 
Harmony-14 contribution (although it shouldn't sometimes IMHO).
Therefore if there are any doubts in my argumentation this issue can be closed 
as invalid. 


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

Reply via email to