Commit cbca180a authored by charras's avatar charras

bug fix 2660689 Unconnected pads in RC4

parent eb4c5eba
...@@ -17,6 +17,7 @@ email address. ...@@ -17,6 +17,7 @@ email address.
So they are temporary disabled (see my comments in these functions) 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: 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) 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> 2009-Feb-25 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
......
...@@ -346,9 +346,7 @@ void WinEDA_BasePcbFrame::test_1_net_connexion( wxDC* DC, int net_code ) ...@@ -346,9 +346,7 @@ void WinEDA_BasePcbFrame::test_1_net_connexion( wxDC* DC, int net_code )
if( m_Pcb->m_Track ) if( m_Pcb->m_Track )
{ {
TRACK* pt_start_conn; TRACK* pt_start_conn;
TRACK* pt_end_conn; TRACK* pt_end_conn = NULL;
pt_end_conn = NULL;
pt_start_conn = m_Pcb->m_Track.GetFirst()->GetStartNetCode( net_code ); pt_start_conn = m_Pcb->m_Track.GetFirst()->GetStartNetCode( net_code );
if( pt_start_conn ) if( pt_start_conn )
...@@ -441,6 +439,7 @@ static void Build_Pads_Info_Connections_By_Tracks( TRACK* pt_start_conn, TRACK* ...@@ -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 ); Track->end = Locate_Piste_Connectee( Track, Track, pt_end_conn, END );
} }
if( Track == pt_end_conn ) if( Track == pt_end_conn )
break; break;
} }
......
...@@ -505,6 +505,7 @@ void WinEDA_PcbFrame::End_Route( TRACK* aTrack, wxDC* DC ) ...@@ -505,6 +505,7 @@ void WinEDA_PcbFrame::End_Route( TRACK* aTrack, wxDC* DC )
for( track=firstTrack; track && i<newCount; ++i, track = track->Next() ) for( track=firstTrack; track && i<newCount; ++i, track = track->Next() )
{ {
track->m_Flags = 0; track->m_Flags = 0;
track->SetState( BUSY, OFF );
} }
// erase the old track, if exists // erase the old track, if exists
......
...@@ -81,10 +81,12 @@ int EraseOldTrack( WinEDA_BasePcbFrame* frame, BOARD* Pcb, wxDC* DC, ...@@ -81,10 +81,12 @@ int EraseOldTrack( WinEDA_BasePcbFrame* frame, BOARD* Pcb, wxDC* DC,
BufEnd = BufDeb->GetEndNetCode( netcode ); BufEnd = BufDeb->GetEndNetCode( netcode );
/* nettoyage des flags pour tout le net */ /* 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 );) D(printf("track %p turning off BUSY | EDIT | CHAIN\n", pt_del );)
pt_del->SetState( BUSY | EDIT | CHAIN, OFF ); pt_del->SetState( BUSY | EDIT | CHAIN, OFF );
if( pt_del == BufEnd ) // Last segment reached
break;
} }
/* Calcul des points limites de la nouvelle piste */ /* Calcul des points limites de la nouvelle piste */
...@@ -173,10 +175,12 @@ int EraseOldTrack( WinEDA_BasePcbFrame* frame, BOARD* Pcb, wxDC* DC, ...@@ -173,10 +175,12 @@ int EraseOldTrack( WinEDA_BasePcbFrame* frame, BOARD* Pcb, wxDC* DC,
if( nbconnect == 0 ) if( nbconnect == 0 )
{ {
/* nettoyage des flags */ /* Clear used flagss */
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() )
{ {
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; return 0;
...@@ -191,10 +195,12 @@ int EraseOldTrack( WinEDA_BasePcbFrame* frame, BOARD* Pcb, wxDC* DC, ...@@ -191,10 +195,12 @@ int EraseOldTrack( WinEDA_BasePcbFrame* frame, BOARD* Pcb, wxDC* DC,
/* Examen de tous les segments marques */ /* Examen de tous les segments marques */
while( nbconnect ) 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 ) ) if( pt_del->GetState( CHAIN ) )
break; break;
if( pt_del == BufEnd ) // Last segment reached
break;
} }
nbconnect--; nbconnect--;
...@@ -244,10 +250,12 @@ int EraseOldTrack( WinEDA_BasePcbFrame* frame, BOARD* Pcb, wxDC* DC, ...@@ -244,10 +250,12 @@ int EraseOldTrack( WinEDA_BasePcbFrame* frame, BOARD* Pcb, wxDC* DC,
ListSetState( pt_del, nb_segm, BUSY, OFF ); ListSetState( pt_del, nb_segm, BUSY, OFF );
} }
/* nettoyage des flags */ /* Clear used flags */
for( pt_del = Pcb->m_Track; pt_del && pt_del != BufEnd; pt_del = pt_del->Next() ) 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; return 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment