Pcbnew: fix a crash when a non ascii char (i.e. a char having a code > 127) is found in a text (see Bug #1246340).

Could be only a temporary fix (tested only with French non ascii chars).
This commit is contained in:
jean-pierre charras 2013-10-30 21:07:52 +01:00
parent e4825ee2fc
commit b8d81d263c
1 changed files with 14 additions and 3 deletions

View File

@ -244,8 +244,13 @@ void STROKE_FONT::Draw( std::string aText, const VECTOR2D& aPosition, double aRo
GLYPH_LIST::iterator glyphIt = m_glyphs.begin();
std::deque<BOX2D>::iterator bbIt = m_glyphBoundingBoxes.begin();
advance( glyphIt, (int) ( *chIt ) - (int) ' ' );
advance( bbIt, (int) ( *chIt ) - (int) ' ' );
unsigned dd = (unsigned) ((unsigned char) *chIt ) - (unsigned) ' ';
if( dd >= m_glyphBoundingBoxes.size() )
dd = '?' - ' ';
advance( glyphIt, dd );
advance( bbIt, dd );
GLYPH glyph = *glyphIt;
@ -297,7 +302,13 @@ VECTOR2D STROKE_FONT::computeTextSize( const std::string& aText ) const
continue;
std::deque<BOX2D>::const_iterator bbIt = m_glyphBoundingBoxes.begin();
advance( bbIt, (int) ( *chIt ) - (int) ' ' );
unsigned dd = (unsigned) ((unsigned char)*chIt) - (unsigned) ' ';
if( dd >= m_glyphBoundingBoxes.size() )
dd = '?' - ' ';
advance( bbIt, dd );
result.x += m_scaleFactor * m_glyphSize.x * bbIt->GetEnd().x;
}