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

Petr Mladek pmladek at suse.cz
Tue Mar 6 03:23:02 PST 2012


Michael Stahl píše v St 29. 02. 2012 v 23:08 +0100:
> this patch fixes a STL assertion in GraphiteLayout::expandOrCondense;
> since i don't know how the multitude of arrays in there are supposed to
> be used, i thought it's probably a good idea to check the size of the
> array that will be indexed in the next line, as opposed to one that
> isn't mentioned in the block...
> 
> in case this is the right fix, it should be applied to libreoffice-3-5,
> and possibly libreoffice-3-4 as well (haven't checked).
> 
> http://cgit.freedesktop.org/libreoffice/core/commit/?id=d066f7e4afb3c9e395932ba7bf8715ad0770bcdd

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


Best Regards,
Petr



More information about the LibreOffice mailing list