mirror of
https://github.com/go-vikunja/vikunja.git
synced 2026-08-23 17:46:28 -05:00
sortParentsBeforeChildren marked a task as placed only after recursing into its parent, so a parentId cycle in an uploaded TickTick export made place() recurse forever. That is a Go stack overflow, a runtime fatal error the recover middleware cannot catch, so a two-line CSV from any authenticated user took down the whole process. Track a tri-state per task and mark it before recursing, which breaks the cycle. Acyclic input is unaffected.