harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexey Petrenko" <alexey.a.petre...@gmail.com>
Subject Re: ICU4C gurus? (was: [jira] Commented: (HARMONY-100) text/BidiWrapper issue?)
Date Thu, 12 Oct 2006 10:16:05 GMT
Is any ICU4C gurus here?

I'm setting an embedding levels pointer with ubidi_setPara method. And
it seems that ubidi_getLevels returns not the same pointer.

Is this correct feeling or am I doing something wrong?

SY, Alexey


2006/10/11, Alexey Petrenko (JIRA) <jira@apache.org>:
>    [ http://issues.apache.org/jira/browse/HARMONY-100?page=comments#action_12441378 ]
>
> Alexey Petrenko commented on HARMONY-100:
> -----------------------------------------
>
> I agree with Tim's suggestion and will create a patch.
>
> > text/BidiWrapper issue?
> > -----------------------
> >
> >                 Key: HARMONY-100
> >                 URL: http://issues.apache.org/jira/browse/HARMONY-100
> >             Project: Harmony
> >          Issue Type: Bug
> >          Components: Classlib
> >            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
>
>
>


-- 
Alexey A. Petrenko
Intel Middleware Products Division

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org


Mime
View raw message