eeschema segfault when a library "T" command is missing Halign Valign values

Fixes: lp:1668082
https://bugs.launchpad.net/kicad/+bug/1668082
This commit is contained in:
jean-pierre charras 2017-02-27 17:22:06 +01:00
parent f35cb6cd6a
commit 64d6c3f91c
1 changed files with 32 additions and 28 deletions

View File

@ -2905,42 +2905,46 @@ LIB_TEXT* SCH_LEGACY_PLUGIN_CACHE::loadText( std::unique_ptr< LIB_PART >& aPart,
if( parseInt( aReader, line, &line ) > 0 )
text->SetBold( true );
switch( parseChar( aReader, line, &line ) )
// Some old libaries version > 2.0 do not have these options for text justification:
if( !is_eol( *line ) )
{
case 'L':
text->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
break;
switch( parseChar( aReader, line, &line ) )
{
case 'L':
text->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
break;
case 'C':
text->SetHorizJustify( GR_TEXT_HJUSTIFY_CENTER );
break;
case 'C':
text->SetHorizJustify( GR_TEXT_HJUSTIFY_CENTER );
break;
case 'R':
text->SetHorizJustify( GR_TEXT_HJUSTIFY_RIGHT );
break;
case 'R':
text->SetHorizJustify( GR_TEXT_HJUSTIFY_RIGHT );
break;
default:
SCH_PARSE_ERROR( _( "invalid horizontal text justication parameter, expected L, C, or R" ),
aReader, line );
}
default:
SCH_PARSE_ERROR( _( "invalid horizontal text justication parameter, expected L, C, or R" ),
aReader, line );
}
switch( parseChar( aReader, line, &line ) )
{
case 'T':
text->SetVertJustify( GR_TEXT_VJUSTIFY_TOP );
break;
switch( parseChar( aReader, line, &line ) )
{
case 'T':
text->SetVertJustify( GR_TEXT_VJUSTIFY_TOP );
break;
case 'C':
text->SetVertJustify( GR_TEXT_VJUSTIFY_CENTER );
break;
case 'C':
text->SetVertJustify( GR_TEXT_VJUSTIFY_CENTER );
break;
case 'B':
text->SetVertJustify( GR_TEXT_VJUSTIFY_BOTTOM );
break;
case 'B':
text->SetVertJustify( GR_TEXT_VJUSTIFY_BOTTOM );
break;
default:
SCH_PARSE_ERROR( _( "invalid vertical text justication parameter, expected T, C, or B" ),
aReader, line );
default:
SCH_PARSE_ERROR( _( "invalid vertical text justication parameter, expected T, C, or B" ),
aReader, line );
}
}
}