diff --git a/3d-viewer/vrml_aux.cpp b/3d-viewer/vrml_aux.cpp index 7e34df1b87..8422efa7e8 100644 --- a/3d-viewer/vrml_aux.cpp +++ b/3d-viewer/vrml_aux.cpp @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2014 Mario Luzeiro - * Copyright (C) 1992-2014 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2015 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -28,9 +28,13 @@ #include "vrml_aux.h" -char SkipGetChar( FILE* File ) + +static int SkipGetChar ( FILE* File ); + + +static int SkipGetChar( FILE* File ) { - char c; + int c; bool re_parse; if( ( c = fgetc( File ) ) == EOF ) @@ -92,7 +96,7 @@ char SkipGetChar( FILE* File ) char* GetNextTag( FILE* File, char* tag ) { - char c = SkipGetChar( File ); + int c = SkipGetChar( File ); if( c == EOF ) { @@ -136,7 +140,7 @@ char* GetNextTag( FILE* File, char* tag ) int read_NotImplemented( FILE* File, char closeChar ) { - char c; + int c; // DBG( printf( "look for %c\n", closeChar) ); while( ( c = fgetc( File ) ) != EOF ) @@ -189,7 +193,7 @@ int parseVertex( FILE* File, glm::vec3& dst_vertex ) dst_vertex.y = b; dst_vertex.z = c; - char s = SkipGetChar( File ); + int s = SkipGetChar( File ); if( s != EOF ) { diff --git a/3d-viewer/vrml_aux.h b/3d-viewer/vrml_aux.h index 479a4039fc..f245ce7dfc 100644 --- a/3d-viewer/vrml_aux.h +++ b/3d-viewer/vrml_aux.h @@ -49,7 +49,6 @@ #include int read_NotImplemented( FILE* File, char closeChar); -char SkipGetChar ( FILE* File ); int parseVertexList( FILE* File, std::vector< glm::vec3 > &dst_vector); int parseVertex( FILE* File, glm::vec3 &dst_vertex ); int parseFloat( FILE* File, float *dst_float ); diff --git a/3d-viewer/vrml_v1_modelparser.cpp b/3d-viewer/vrml_v1_modelparser.cpp index 5ada319024..814daf3e46 100644 --- a/3d-viewer/vrml_v1_modelparser.cpp +++ b/3d-viewer/vrml_v1_modelparser.cpp @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2014 Mario Luzeiro - * Copyright (C) 1992-2014 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2015 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -93,7 +93,7 @@ void VRML1_MODEL_PARSER::Load( const wxString& aFilename, double aVrmlunits_to_3 while( GetNextTag( m_file, text ) ) { - if( ( text == NULL ) || ( *text == '}' ) || ( *text == ']' ) ) + if( ( *text == '}' ) || ( *text == ']' ) ) { continue; } @@ -187,7 +187,7 @@ int VRML1_MODEL_PARSER::readMaterial() while( GetNextTag( m_file, text ) ) { - if( ( text == NULL ) || ( *text == ']' ) ) + if( *text == ']' ) { continue; } @@ -235,7 +235,7 @@ int VRML1_MODEL_PARSER::readCoordinate3() while( GetNextTag( m_file, text ) ) { - if( ( text == NULL ) || ( *text == ']' ) ) + if( *text == ']' ) { continue; } @@ -263,7 +263,7 @@ int VRML1_MODEL_PARSER::readIndexedFaceSet() while( GetNextTag( m_file, text ) ) { - if( ( text == NULL ) || ( *text == ']' ) ) + if( *text == ']' ) { continue; } diff --git a/3d-viewer/vrml_v2_modelparser.cpp b/3d-viewer/vrml_v2_modelparser.cpp index 2c21f9bdf3..f1eb4772ef 100644 --- a/3d-viewer/vrml_v2_modelparser.cpp +++ b/3d-viewer/vrml_v2_modelparser.cpp @@ -95,7 +95,7 @@ void VRML2_MODEL_PARSER::Load( const wxString& aFilename, double aVrmlunits_to_3 while( GetNextTag( m_file, text ) ) { - if( ( text == NULL ) || ( *text == '}' ) || ( *text == ']' ) ) + if( ( *text == '}' ) || ( *text == ']' ) ) { continue; } @@ -140,7 +140,7 @@ int VRML2_MODEL_PARSER::read_Transform() while( GetNextTag( m_file, text ) ) { - if( ( text == NULL ) || ( *text == ']' ) ) + if( *text == ']' ) { continue; } @@ -259,7 +259,7 @@ int VRML2_MODEL_PARSER::read_DEF() while( GetNextTag( m_file, text ) ) { - if( ( text == NULL ) || ( *text == ']' ) ) + if( *text == ']' ) { // DBG( printf( " skiping %c\n", *text) ); continue; @@ -316,7 +316,7 @@ int VRML2_MODEL_PARSER::read_Shape() while( GetNextTag( m_file, text ) ) { - if( ( text == NULL ) || ( *text == ']' ) ) + if( *text == ']' ) { continue; } @@ -363,7 +363,7 @@ int VRML2_MODEL_PARSER::read_Appearance() while( GetNextTag( m_file, text ) ) { - if( ( text == NULL ) || ( *text == ']' ) ) + if( *text == ']' ) { continue; } @@ -468,7 +468,7 @@ int VRML2_MODEL_PARSER::read_Material() while( GetNextTag( m_file, text ) ) { - if( ( text == NULL ) || ( *text == ']' ) ) + if( *text == ']' ) { continue; } @@ -561,7 +561,7 @@ int VRML2_MODEL_PARSER::read_IndexedFaceSet() while( GetNextTag( m_file, text ) ) { - if( ( text == NULL ) || ( *text == ']' ) ) + if( *text == ']' ) { continue; } @@ -744,7 +744,7 @@ int VRML2_MODEL_PARSER::read_Color() while( GetNextTag( m_file, text ) ) { - if( ( text == NULL ) || ( *text == ']' ) ) + if( *text == ']' ) { continue; } @@ -774,7 +774,7 @@ int VRML2_MODEL_PARSER::read_Normal() while( GetNextTag( m_file, text ) ) { - if( ( text == NULL ) || ( *text == ']' ) ) + if( *text == ']' ) { continue; } @@ -812,7 +812,7 @@ int VRML2_MODEL_PARSER::read_Coordinate() while( GetNextTag( m_file, text ) ) { - if( ( text == NULL ) || ( *text == ']' ) ) + if( *text == ']' ) { continue; } diff --git a/bitmap2component/bitmap2component.cpp b/bitmap2component/bitmap2component.cpp index 6e3427ebff..a8799aceef 100644 --- a/bitmap2component/bitmap2component.cpp +++ b/bitmap2component/bitmap2component.cpp @@ -158,6 +158,12 @@ int bitmap2component( potrace_bitmap_t* aPotrace_bitmap, FILE* aOutfile, st = potrace_trace( param, aPotrace_bitmap ); if( !st || st->status != POTRACE_STATUS_OK ) { + if( st ) + { + potrace_state_free( st ); + } + potrace_param_free( param ); + fprintf( stderr, "Error tracing bitmap: %s\n", strerror( errno ) ); return 1; } diff --git a/eeschema/lib_pin.cpp b/eeschema/lib_pin.cpp index f4d997ab95..409492d663 100644 --- a/eeschema/lib_pin.cpp +++ b/eeschema/lib_pin.cpp @@ -1919,38 +1919,44 @@ void LIB_PIN::SetWidth( int aWidth ) void LIB_PIN::GetMsgPanelInfo( MSG_PANEL_ITEMS& aList ) { - wxString Text; + wxString text; LIB_ITEM::GetMsgPanelInfo( aList ); aList.push_back( MSG_PANEL_ITEM( _( "Name" ), m_name, DARKCYAN ) ); if( m_number == 0 ) - Text = wxT( "?" ); + text = wxT( "?" ); else - PinStringNum( Text ); + PinStringNum( text ); - aList.push_back( MSG_PANEL_ITEM( _( "Number" ), Text, DARKCYAN ) ); + aList.push_back( MSG_PANEL_ITEM( _( "Number" ), text, DARKCYAN ) ); aList.push_back( MSG_PANEL_ITEM( _( "Type" ), wxGetTranslation( pin_electrical_type_names[ m_type ] ), RED ) ); - Text = wxGetTranslation( pin_style_names[ GetStyleCodeIndex( m_shape ) ] ); - aList.push_back( MSG_PANEL_ITEM( _( "Style" ), Text, BLUE ) ); + + int styleCodeIndex = GetStyleCodeIndex( m_shape ); + if( styleCodeIndex >= 0 ) + text = wxGetTranslation( pin_style_names[ styleCodeIndex ] ); + else + text = wxT( "?" ); + + aList.push_back( MSG_PANEL_ITEM( _( "Style" ), text, BLUE ) ); if( IsVisible() ) - Text = _( "Yes" ); + text = _( "Yes" ); else - Text = _( "No" ); + text = _( "No" ); - aList.push_back( MSG_PANEL_ITEM( _( "Visible" ), Text, DARKGREEN ) ); + aList.push_back( MSG_PANEL_ITEM( _( "Visible" ), text, DARKGREEN ) ); // Display pin length - Text = StringFromValue( g_UserUnit, m_length, true ); - aList.push_back( MSG_PANEL_ITEM( _( "Length" ), Text, MAGENTA ) ); + text = StringFromValue( g_UserUnit, m_length, true ); + aList.push_back( MSG_PANEL_ITEM( _( "Length" ), text, MAGENTA ) ); - Text = wxGetTranslation( pin_orientation_names[ GetOrientationCodeIndex( m_orientation ) ] ); - aList.push_back( MSG_PANEL_ITEM( _( "Orientation" ), Text, DARKMAGENTA ) ); + text = wxGetTranslation( pin_orientation_names[ GetOrientationCodeIndex( m_orientation ) ] ); + aList.push_back( MSG_PANEL_ITEM( _( "Orientation" ), text, DARKMAGENTA ) ); } @@ -2201,11 +2207,18 @@ BITMAP_DEF LIB_PIN::GetMenuImage() const wxString LIB_PIN::GetSelectMenuText() const { wxString tmp; + wxString style; + + int styleCode = GetStyleCodeIndex( m_shape ); + if( styleCode >= 0 ) + style = wxGetTranslation( pin_style_names[ styleCode ] ); + else + style = wxT( "?" ); tmp.Printf( _( "Pin %s, %s, %s" ), GetChars( GetNumberString() ), GetChars( GetTypeString() ), - GetChars( wxGetTranslation( pin_style_names[ GetStyleCodeIndex( m_shape ) ] ) ) + GetChars( style ) ); return tmp; } diff --git a/pcbnew/legacy_netlist_reader.cpp b/pcbnew/legacy_netlist_reader.cpp index f4973d6fa3..cefe733a3d 100644 --- a/pcbnew/legacy_netlist_reader.cpp +++ b/pcbnew/legacy_netlist_reader.cpp @@ -185,6 +185,7 @@ void LEGACY_NETLIST_READER::loadNet( char* aText, COMPONENT* aComponent ) throw( char line[256]; strncpy( line, aText, sizeof( line ) ); + line[ sizeof(line) - 1 ] = '\0'; if( ( p = strtok( line, " ()\t\n" ) ) == NULL ) { diff --git a/scripting/wx_python_helpers.cpp b/scripting/wx_python_helpers.cpp index 8ee7bba28b..587fe2a2d1 100644 --- a/scripting/wx_python_helpers.cpp +++ b/scripting/wx_python_helpers.cpp @@ -186,6 +186,7 @@ PyObject* wx2PyString( const wxString& src ) void wxSetDefaultPyEncoding( const char* encoding ) { strncpy( wxPythonEncoding, encoding, WX_DEFAULTENCODING_SIZE ); + wxPythonEncoding[ WX_DEFAULTENCODING_SIZE - 1 ] = '\0'; }