Dear Petr,

Thank you for the reminder of this issue. My apologies for not getting to it 
earlier.

> > 
> > I do not understand the code either. I just wonder if it would make
> > sense to check for:
> > 
> >     while (++nCharIndex - mnMinCharPos <
> >                     static_cast<int>(mvChar2BaseGlyph.size()))
> > 
> > As the array is accessed as mvChar2BaseGlyph[nCharIndex-mnMinCharPos].
> > Otherwise, the cycle might end too early. 
> > 
> > Another conservative solution would be to combine it with the original
> > check:
> > 
> > while (++nCharIndex < static_cast<int>(mvGlyph2Char.size()) &&
> >        nCharIndex - mnMinCharPos <
> >                         static_cast<int>(mvChar2BaseGlyph.size()))
> 
> Any other opinion here, please?

I would go with the first of these. It makes no sense to compare a charIndex 
against a glyph->char mapping array, whose size is the number of glyphs, not 
characters. I think it is simply a bug.

Notice that I am not claiming authoritative understanding of this code since it 
was written by Keith, who unfortunately is no longer with us and so cannot 
comment. I am hoping that when I eventually get time to work on this code, and 
particularly the mac port, I can refactor the code and gain the necessary 
authoritative confidence.

Yours,
Martin
_______________________________________________
LibreOffice mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to