Commit 06011d6e authored by dickelbeck's avatar dickelbeck
Browse files

fixed a crash which happened if there were no pads at all.

parent 300d50b1
Loading
Loading
Loading
Loading
+15 −7
Original line number Original line Diff line number Diff line
@@ -183,7 +183,10 @@ void CreatePadsShapesSection( FILE* file, BOARD* pcb )
 *  pour les formes de pad PAD1 a PADn
 *  pour les formes de pad PAD1 a PADn
 */
 */
{
{
    D_PAD* pad, ** padlist, ** pad_list_base;
    D_PAD*      pad;
    D_PAD**     padlist;
    D_PAD**     pad_list_base = NULL;
    
    const  char*  pad_type;
    const  char*  pad_type;
    int    memsize, ii, dx, dy;
    int    memsize, ii, dx, dy;
    D_PAD* old_pad = NULL;
    D_PAD* old_pad = NULL;
@@ -191,11 +194,14 @@ void CreatePadsShapesSection( FILE* file, BOARD* pcb )


    fputs( "$PADS\n", file );
    fputs( "$PADS\n", file );


    if( pcb->m_NbPads > 0 )
    {
        // Generation de la liste des pads tries par forme et dimensions:
        // Generation de la liste des pads tries par forme et dimensions:
        memsize = (pcb->m_NbPads + 1) * sizeof(D_PAD *);
        memsize = (pcb->m_NbPads + 1) * sizeof(D_PAD *);
        pad_list_base = (D_PAD**) MyZMalloc( memsize );
        pad_list_base = (D_PAD**) MyZMalloc( memsize );
        memcpy( pad_list_base, pcb->m_Pads, memsize );
        memcpy( pad_list_base, pcb->m_Pads, memsize );
        qsort( pad_list_base, pcb->m_NbPads, sizeof(D_PAD *), Pad_list_Sort_by_Shapes );
        qsort( pad_list_base, pcb->m_NbPads, sizeof(D_PAD *), Pad_list_Sort_by_Shapes );
    }


    pad_name_number = 0;
    pad_name_number = 0;
    for( padlist = pad_list_base, ii = 0; ii < pcb->m_NbPads; padlist++, ii++ )
    for( padlist = pad_list_base, ii = 0; ii < pcb->m_NbPads; padlist++, ii++ )
@@ -295,6 +301,8 @@ void CreatePadsShapesSection( FILE* file, BOARD* pcb )
    }
    }


    fputs( "$ENDPADS\n\n", file );
    fputs( "$ENDPADS\n\n", file );
    
    if( pad_list_base )
        MyFree( pad_list_base );
        MyFree( pad_list_base );
}
}