| | Client::releaseClient() deletes all Client objects referenced by stacking_order, thus those pointers dangle and everything trying to touch it dies an ugly death. |
| |
|
| | There're basically two ways to deal with this:
|
| | this ("copy" the list away and show everyone else an empty list)
|
| | it = stacking_order.erase(it); |
| |
|
| | I prefer this solution since it allows to operate on const iterators and (more important, since copy overhead is nearly equal and irrelevant) providing a randomly partial stacking order on providing a stacking order is not gonna lead to the results you desire anyway. |
| |
|
| + | Also the Unmanaged handling below has the same issue (deletes stuff referenced by the stacking order) so i guess the presented way is the correct option. |
| + |
|
| | Nevertheless this needs testing against other (pot. more prominent) crashes on exit (anything expecting non-empty stacking orders or whatnot) |