kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #27820
Re: [PATCH] Prevent segfault when aOutline has no vertices.
Please fix you coding policy violations so this patch can be merged.
On 2/13/2017 6:30 AM, hauptmech wrote:
> When attempting to read a pcad file exported from Altium, kicad was
> segfaulting because it was trying to access an empty array. This patch
> fixes that.
>
> The reason the array was empty was the the board outline in the pcad
> file was composed of only arcs and the plugin only processes lines in
> the board outline. Adding this functionality is for another patch I
> suppose.
>
> -hauptmech
>
> ---
> pcbnew/pcad2kicadpcb_plugin/pcb_polygon.cpp | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/pcbnew/pcad2kicadpcb_plugin/pcb_polygon.cpp
> b/pcbnew/pcad2kicadpcb_plugin/pcb_polygon.cpp
> index 6d7045fb9..664742056 100644
> --- a/pcbnew/pcad2kicadpcb_plugin/pcb_polygon.cpp
> +++ b/pcbnew/pcad2kicadpcb_plugin/pcb_polygon.cpp
> @@ -94,8 +94,10 @@ void PCB_POLYGON::SetOutline( VERTICES_ARRAY* aOutline )
> for( i = 0; i < (int) aOutline->GetCount(); i++ )
> m_outline.Add( new wxRealPoint( (*aOutline)[i]->x,
> (*aOutline)[i]->y ) );
>
> - m_positionX = m_outline[0]->x;
> - m_positionY = m_outline[0]->y;
> + if (m_outline.Count() > 0){
> + m_positionX = m_outline[0]->x;
> + m_positionY = m_outline[0]->y;
> + }
> }
>
> void PCB_POLYGON::FormPolygon( XNODE* aNode, VERTICES_ARRAY* aPolygon,
Follow ups
References