Skip to content

corona: stop iterating mutating list

Harald Sitter requested to merge work/sitter/nocrashy into master

we connect to the destroyed signal of the containments so when they get destroyed we mutate the list. that was risky but not a problem in of itself because we'd only mutate the front of the list. what's more problematic is that when a containment is somehow parent-chained to an earlier containment in the list it'd get destroyed and mutate the list beyond the current iterator.

fixes a crash in plasmoidviewer when viewing the systemtray. where notably we had: corona tracks desktop containment, desktop containment is parent to the systemtraycontainer, systemtraycontainer is parent to systemtray containment, systemtray containment is ALSO tracked by corona. corona would destruct, destroy desktop containment, destroy applet, destroy containment, mutate list, corona would try to destroy next iterator (what was the systemtray containment) and crash

Merge request reports