congratulations -- you are our 100th customer! Step over here for your special gift.
(Too bad Svetlana, you missed out after all that hard work :-) ). Tim Vladimir Gorr (JIRA) wrote: > 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. > > -- Tim Ellison ([EMAIL PROTECTED]) IBM Java technology centre, UK.