StartPlot can fail and leave a broken file handle

Related https://gitlab.com/kicad/code/kicad/-/issues/15782
This commit is contained in:
Marek Roszko 2023-09-29 19:51:57 -04:00
parent b5dacc659d
commit a347aa7647
2 changed files with 23 additions and 22 deletions

View File

@ -251,7 +251,7 @@ bool GERBER_PLOTTER::StartPlot( const wxString& aPageNumber )
// Create a temp file in system temp to avoid potential network share buffer issues for
// the final read and save.
m_workFilename = wxFileName::CreateTempFileName( "" );
workFile = wxFopen( m_workFilename, wxT( "wt" ));
workFile = wxFopen( m_workFilename, wxT( "wt" ) );
m_outputFile = workFile;
wxASSERT( m_outputFile );

View File

@ -1227,14 +1227,14 @@ PLOTTER* StartPlotBoard( BOARD *aBoard, const PCB_PLOT_PARAMS *aPlotOpts, int aL
AddGerberX2Attribute( plotter, aBoard, aLayer, not useX2mode );
}
plotter->StartPlot( wxT( "1" ) );
if( plotter->StartPlot( wxT( "1" ) ) )
{
// Plot the frame reference if requested
if( aPlotOpts->GetPlotFrameRef() )
{
PlotDrawingSheet( plotter, aBoard->GetProject(), aBoard->GetTitleBlock(),
aBoard->GetPageSettings(), &aBoard->GetProperties(), wxT( "1" ), 1,
aSheetName, aSheetPath, aBoard->GetFileName(),
aBoard->GetPageSettings(), &aBoard->GetProperties(), wxT( "1" ),
1, aSheetName, aSheetPath, aBoard->GetFileName(),
renderSettings->GetLayerColor( LAYER_DRAWINGSHEET ) );
if( aPlotOpts->GetMirror() )
@ -1252,6 +1252,7 @@ PLOTTER* StartPlotBoard( BOARD *aBoard, const PCB_PLOT_PARAMS *aPlotOpts, int aL
return plotter;
}
}
delete plotter->RenderSettings();
delete plotter;