diff --git a/pcbnew/plugins/legacy/legacy_plugin.cpp b/pcbnew/plugins/legacy/legacy_plugin.cpp index 1d19900797..40dc3b1f9c 100644 --- a/pcbnew/plugins/legacy/legacy_plugin.cpp +++ b/pcbnew/plugins/legacy/legacy_plugin.cpp @@ -382,15 +382,22 @@ BOARD* LEGACY_PLUGIN::Load( const wxString& aFileName, BOARD* aAppendToMe, init( aProperties ); - m_board = aAppendToMe ? aAppendToMe : new BOARD(); + std::unique_ptr boardDeleter; + + if( aAppendToMe ) + { + m_board = aAppendToMe; + } + else + { + boardDeleter = std::make_unique(); + m_board = boardDeleter.get(); + } // Give the filename to the board if it's new if( !aAppendToMe ) m_board->SetFileName( aFileName ); - // delete on exception, iff I own m_board, according to aAppendToMe - std::unique_ptr deleter( aAppendToMe ? NULL : m_board ); - FILE_LINE_READER reader( aFileName ); m_reader = &reader; // member function accessibility @@ -399,7 +406,7 @@ BOARD* LEGACY_PLUGIN::Load( const wxString& aFileName, BOARD* aAppendToMe, loadAllSections( bool( aAppendToMe ) ); - deleter.release(); + (void)boardDeleter.release(); // give it up so we dont delete it on exit return m_board; }