Merge lp:~cern-kicad/kicad/bugfix_1283396 into lp:kicad/product

Proposed by Maciej Suminski
Status: Merged
Merged at revision: 4731
Proposed branch: lp:~cern-kicad/kicad/bugfix_1283396
Merge into: lp:kicad/product
Diff against target: 49 lines (+20/-6)
1 file modified
pcbnew/ratsnest_data.cpp (+20/-6)
To merge this branch: bzr merge lp:~cern-kicad/kicad/bugfix_1283396
Reviewer Review Type Date Requested Status
KiCad Lead Developers Pending
Review via email: mp+208942@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Ian O'Hara (ianohara) wrote :

Hi,

Just for my own education, are negative net numbers ever valid (are they used for a special purpose or something?)? Also, is netcode 0 valid and/or special?

Thanks,
Ian

Revision history for this message
Maciej Suminski (orsonmmz) wrote :

Hi Ian,

The only situation I have seen negative net numbers is when there is a zone that used to be connected to a net that does not exist anymore. Netcode 0 is reserved for unconnected items.

Regards,
Orson

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'pcbnew/ratsnest_data.cpp'
2--- pcbnew/ratsnest_data.cpp 2014-01-26 21:01:42 +0000
3+++ pcbnew/ratsnest_data.cpp 2014-03-01 20:28:15 +0000
4@@ -801,26 +801,40 @@
5 {
6 m_nets.clear();
7 m_nets.resize( m_board->GetNetCount() );
8+ int netCode;
9
10 // Iterate over all items that may need to be connected
11 for( MODULE* module = m_board->m_Modules; module; module = module->Next() )
12 {
13 for( D_PAD* pad = module->Pads().GetFirst(); pad; pad = pad->Next() )
14- m_nets[pad->GetNet()].AddItem( pad );
15+ {
16+ netCode = pad->GetNet();
17+
18+ if( netCode > 0 )
19+ m_nets[netCode].AddItem( pad );
20+ }
21 }
22
23 for( TRACK* track = m_board->m_Track; track; track = track->Next() )
24 {
25- if( track->Type() == PCB_VIA_T )
26- m_nets[track->GetNet()].AddItem( static_cast<SEGVIA*>( track ) );
27- else if( track->Type() == PCB_TRACE_T )
28- m_nets[track->GetNet()].AddItem( track );
29+ netCode = track->GetNet();
30+
31+ if( netCode > 0 )
32+ {
33+ if( track->Type() == PCB_VIA_T )
34+ m_nets[netCode].AddItem( static_cast<SEGVIA*>( track ) );
35+ else if( track->Type() == PCB_TRACE_T )
36+ m_nets[netCode].AddItem( track );
37+ }
38 }
39
40 for( int i = 0; i < m_board->GetAreaCount(); ++i )
41 {
42 ZONE_CONTAINER* zone = m_board->GetArea( i );
43- m_nets[zone->GetNet()].AddItem( zone );
44+ netCode = zone->GetNet();
45+
46+ if( netCode > 0 )
47+ m_nets[netCode].AddItem( zone );
48 }
49 }
50