Refuse own-family reads before any survey, and panic on a clash where readSurvey.edge enters a read's pins

This commit is contained in:
2026-09-29 13:09:19 +02:00
committed by Lillem4n
parent 25857fb660
commit 6cb2d143d6
3 changed files with 18 additions and 2 deletions
+6 -1
View File
@@ -122,7 +122,12 @@ func (s *readSurvey) edge(from node, e renderEdge, at surveyAt) {
s.reads = append(s.reads, pathRead{at, a, tr})
}
if tr != nil {
tr.pins.each(func(t *table, r int) { at.pins = at.pins.entered(t, r) })
tr.pins.each(func(t *table, r int) {
if c := at.pins.clash(t, r); c != nil {
panic(internalError("%s reads %s past a pinned row of %s, which checkOwnFamily refuses", e.reached(), t.selectorSpelling(r), c.path))
}
at.pins = at.pins.entered(t, r)
})
}
}
s.walk(e.to, at)