attribute PCB::skip-drc does not work
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
pcb |
Fix Released
|
Undecided
|
Andrew Poelstra |
Bug Description
The layer attribute "PCB::skip-drc" is supposed to suppress DRC checks on this layer. The code in find.c tries to skip the tagged layer. As it is, the code runs into an endless loop when the attribute is set at line 1174. This can be remedied with statements that set LineList ArcList and PolygonList (see attached patch). However, the continue statement in line 824 leads to more reported violations than without. For some reason the calls of r_search() are needed for proper operation.
Unfortunately, the internals of the r_search() function are beyond my level of C comprehension.
---<)kaimartin(>---
PS: While skip-drc solves some problems, it cannot deal with situations that call for more than one set of rules. A better solution would allow to specify separate DRC rules per layer, per net, per footprint and ultimately per object.
Changed in pcb: | |
assignee: | nobody → Andrew Poelstra (asp11) |
status: | New → Confirmed |
Changed in pcb: | |
status: | Fix Committed → Fix Released |
Changed in pcb: | |
milestone: | none → pcb-20140316 |
Bug was fixed by a commit bf52e9c3df2c616 39c368622a git.geda- project. org/pcb/ commit/ ?id=9fb614b8fd0 15e9bf52e9c3df2 c61639c368622a
git master commit 9fb614b8fd015e9
http://
commit 9fb614b8fd015e9 bf52e9c3df2c616 39c368622a
Author: Andrew Poelstra (local) <email address hidden>
Commit: Andrew Poelstra (local) <email address hidden>
Fix infinite loop on PCB::skip-drc attribute
When doing a DRC check, pcb skips checking any layers who have the
PCB::skip-drc attribute set. However, when determining whether the
check is complete (via the ListsEmpty()) function, it doesn't skip
these layers.
The result is an infinite loop, since if there is work to be done
on a skip-drc layer, the checker will keep running until it is done
-- i.e., will keep running forever.
This patch skips skip-drc layers in ListsEmpty().
Closes-bug: lp-829123