diff --git a/tracker/model.go b/tracker/model.go index 98150f5..4c741f9 100644 --- a/tracker/model.go +++ b/tracker/model.go @@ -1267,9 +1267,13 @@ func (m *Model) freeUnitIDs(units []sointu.Unit) { } func (m *Model) assignUnitIDs(units []sointu.Unit) { + rewrites := map[int]int{} for i := range units { - if units[i].ID == 0 || m.usedIDs[units[i].ID] { + if id := units[i].ID; id == 0 || m.usedIDs[id] { m.maxID++ + if id > 0 { + rewrites[id] = m.maxID + } units[i].ID = m.maxID } m.usedIDs[units[i].ID] = true @@ -1277,6 +1281,13 @@ func (m *Model) assignUnitIDs(units []sointu.Unit) { m.maxID = units[i].ID } } + for i, u := range units { + if target, ok := u.Parameters["target"]; u.Type == "send" && ok { + if newId, ok := rewrites[target]; ok { + units[i].Parameters["target"] = newId + } + } + } } func (m *Model) computePatternUseCounts() {