[REVIEW][3-5] fix STL assertion in vcl graphite code

Martin Hosken martin_hosken at sil.org
Mon Mar 19 07:22:50 PDT 2012

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.


More information about the LibreOffice mailing list