From d49cdb2dedef38934a9525e776a95a444d59807d Mon Sep 17 00:00:00 2001 From: Dick Hollenbeck Date: Wed, 24 Oct 2012 12:38:10 -0500 Subject: [PATCH] DSN_LEXER underneath PCB_PARSER does not own the LINE_READER it receives, fix memory leak --- pcbnew/kicad_plugin.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pcbnew/kicad_plugin.cpp b/pcbnew/kicad_plugin.cpp index ce35e8a69a..9f68431530 100644 --- a/pcbnew/kicad_plugin.cpp +++ b/pcbnew/kicad_plugin.cpp @@ -240,7 +240,8 @@ void FP_CACHE::Load() } // reader now owns fp, will close on exception or return - PCB_PARSER parser( new FILE_LINE_READER( fp, fpFileName ) ); + FILE_LINE_READER reader( fp, fpFileName ); + PCB_PARSER parser( &reader ); std::string name = TO_UTF8( fpFileName ); @@ -1493,12 +1494,12 @@ BOARD* PCB_IO::Load( const wxString& aFileName, BOARD* aAppendToMe, PROPERTIES* if( !file.IsOpened() ) { - wxString msg; - msg.Printf( _( "Unable to read file \"%s\"" ), GetChars( aFileName ) ); + wxString msg = wxString::Format( _( "Unable to read file \"%s\"" ), GetChars( aFileName ) ); THROW_IO_ERROR( msg ); } - PCB_PARSER parser( new FILE_LINE_READER( file.fp(), aFileName ), aAppendToMe ); + FILE_LINE_READER reader( file.fp(), aFileName ); + PCB_PARSER parser( &reader, aAppendToMe ); BOARD* board = dynamic_cast( parser.Parse() ); wxASSERT( board );