mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-09-14 10:13:19 +02:00
StartPlot can fail and leave a broken file handle
Related https://gitlab.com/kicad/code/kicad/-/issues/15782
This commit is contained in:
parent
b5dacc659d
commit
a347aa7647
@ -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
|
// Create a temp file in system temp to avoid potential network share buffer issues for
|
||||||
// the final read and save.
|
// the final read and save.
|
||||||
m_workFilename = wxFileName::CreateTempFileName( "" );
|
m_workFilename = wxFileName::CreateTempFileName( "" );
|
||||||
workFile = wxFopen( m_workFilename, wxT( "wt" ));
|
workFile = wxFopen( m_workFilename, wxT( "wt" ) );
|
||||||
m_outputFile = workFile;
|
m_outputFile = workFile;
|
||||||
wxASSERT( m_outputFile );
|
wxASSERT( m_outputFile );
|
||||||
|
|
||||||
|
@ -1227,30 +1227,31 @@ PLOTTER* StartPlotBoard( BOARD *aBoard, const PCB_PLOT_PARAMS *aPlotOpts, int aL
|
|||||||
AddGerberX2Attribute( plotter, aBoard, aLayer, not useX2mode );
|
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(),
|
// Plot the frame reference if requested
|
||||||
aBoard->GetPageSettings(), &aBoard->GetProperties(), wxT( "1" ), 1,
|
if( aPlotOpts->GetPlotFrameRef() )
|
||||||
aSheetName, aSheetPath, aBoard->GetFileName(),
|
{
|
||||||
renderSettings->GetLayerColor( LAYER_DRAWINGSHEET ) );
|
PlotDrawingSheet( plotter, aBoard->GetProject(), aBoard->GetTitleBlock(),
|
||||||
|
aBoard->GetPageSettings(), &aBoard->GetProperties(), wxT( "1" ),
|
||||||
|
1, aSheetName, aSheetPath, aBoard->GetFileName(),
|
||||||
|
renderSettings->GetLayerColor( LAYER_DRAWINGSHEET ) );
|
||||||
|
|
||||||
if( aPlotOpts->GetMirror() )
|
if( aPlotOpts->GetMirror() )
|
||||||
initializePlotter( plotter, aBoard, aPlotOpts );
|
initializePlotter( plotter, aBoard, aPlotOpts );
|
||||||
|
}
|
||||||
|
|
||||||
|
// When plotting a negative board: draw a black rectangle (background for plot board
|
||||||
|
// in white) and switch the current color to WHITE; note the color inversion is actually
|
||||||
|
// done in the driver (if supported)
|
||||||
|
if( aPlotOpts->GetNegative() )
|
||||||
|
{
|
||||||
|
BOX2I bbox = aBoard->ComputeBoundingBox();
|
||||||
|
FillNegativeKnockout( plotter, bbox );
|
||||||
|
}
|
||||||
|
|
||||||
|
return plotter;
|
||||||
}
|
}
|
||||||
|
|
||||||
// When plotting a negative board: draw a black rectangle (background for plot board
|
|
||||||
// in white) and switch the current color to WHITE; note the color inversion is actually
|
|
||||||
// done in the driver (if supported)
|
|
||||||
if( aPlotOpts->GetNegative() )
|
|
||||||
{
|
|
||||||
BOX2I bbox = aBoard->ComputeBoundingBox();
|
|
||||||
FillNegativeKnockout( plotter, bbox );
|
|
||||||
}
|
|
||||||
|
|
||||||
return plotter;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
delete plotter->RenderSettings();
|
delete plotter->RenderSettings();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user