Commit cbca180a authored by charras's avatar charras
Browse files

bug fix 2660689 Unconnected pads in RC4

parent eb4c5eba
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ email address.
        So they are temporary disabled (see my comments in these functions)
    bug fix in Marque_Une_Piste(): the last segments created can be see as part of the flagged track:
        so delete track (or edit track width) deletes the track and some others segments (last created)
    bug fix 2660689 Unconnected pads in RC4. Also fixed some no deletion of the old track when creating a new track

    
2009-Feb-25 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
+2 −3
Original line number Diff line number Diff line
@@ -346,9 +346,7 @@ void WinEDA_BasePcbFrame::test_1_net_connexion( wxDC* DC, int net_code )
    if( m_Pcb->m_Track )
    {
        TRACK*  pt_start_conn;
        TRACK*  pt_end_conn;

        pt_end_conn   = NULL;
        TRACK*  pt_end_conn = NULL;
        pt_start_conn = m_Pcb->m_Track.GetFirst()->GetStartNetCode( net_code );

        if( pt_start_conn )
@@ -441,6 +439,7 @@ static void Build_Pads_Info_Connections_By_Tracks( TRACK* pt_start_conn, TRACK*
        {
            Track->end = Locate_Piste_Connectee( Track, Track, pt_end_conn, END );
        }

        if( Track == pt_end_conn )
            break;
    }
+1 −0
Original line number Diff line number Diff line
@@ -505,6 +505,7 @@ void WinEDA_PcbFrame::End_Route( TRACK* aTrack, wxDC* DC )
        for( track=firstTrack; track && i<newCount;  ++i, track = track->Next() )
        {
            track->m_Flags = 0;
            track->SetState( BUSY, OFF );
        }

        // erase the old track, if exists
+16 −8
Original line number Diff line number Diff line
@@ -81,10 +81,12 @@ int EraseOldTrack( WinEDA_BasePcbFrame* frame, BOARD* Pcb, wxDC* DC,
    BufEnd = BufDeb->GetEndNetCode( netcode );

    /* nettoyage des flags pour tout le net */
    for( pt_del = BufDeb;  pt_del && pt_del != BufEnd;  pt_del = pt_del->Next() )
    for( pt_del = BufDeb;  pt_del;  pt_del = pt_del->Next() )
    {
        D(printf("track %p turning off BUSY | EDIT | CHAIN\n", pt_del );)
        pt_del->SetState( BUSY | EDIT | CHAIN, OFF );
        if( pt_del == BufEnd )  // Last segment reached
            break;
    }

    /* Calcul des points limites de la nouvelle piste */
@@ -173,10 +175,12 @@ int EraseOldTrack( WinEDA_BasePcbFrame* frame, BOARD* Pcb, wxDC* DC,

    if( nbconnect == 0 )
    {
        /* nettoyage des flags */
        for( pt_del = BufDeb; pt_del && pt_del != BufEnd; pt_del = pt_del->Next() )
        /* Clear used flagss */
        for( pt_del = BufDeb; pt_del; pt_del = pt_del->Next() )
        {
            pt_del->SetState( DELETED | EDIT | CHAIN, OFF );
            pt_del->SetState( BUSY | DELETED | EDIT | CHAIN, OFF );
            if( pt_del == BufEnd )  // Last segment reached
                break;
        }

        return 0;
@@ -191,10 +195,12 @@ int EraseOldTrack( WinEDA_BasePcbFrame* frame, BOARD* Pcb, wxDC* DC,
    /* Examen de tous les segments marques */
    while( nbconnect )
    {
        for( pt_del = BufDeb; pt_del && pt_del != BufEnd; pt_del = pt_del->Next() )
        for( pt_del = BufDeb; pt_del; pt_del = pt_del->Next() )
        {
            if( pt_del->GetState( CHAIN ) )
                break;
            if( pt_del == BufEnd )  // Last segment reached
                break;
        }

        nbconnect--;
@@ -244,10 +250,12 @@ int EraseOldTrack( WinEDA_BasePcbFrame* frame, BOARD* Pcb, wxDC* DC,
        ListSetState( pt_del, nb_segm, BUSY, OFF );
    }

    /* nettoyage des flags */
    for( pt_del = Pcb->m_Track; pt_del && pt_del != BufEnd; pt_del = pt_del->Next() )
    /* Clear used flags */
    for( pt_del = Pcb->m_Track; pt_del; pt_del = pt_del->Next() )
    {
        pt_del->SetState( DELETED | EDIT | CHAIN, OFF );
        pt_del->SetState( BUSY | DELETED | EDIT | CHAIN, OFF );
        if( pt_del == BufEnd )  // Last segment reached
            break;
    }

    return 0;