diff options
author | Simon Ser <contact@emersion.fr> | 2023-02-02 11:43:00 +0100 |
---|---|---|
committer | Simon Zeni <simon@bl4ckb0ne.ca> | 2023-02-02 16:45:09 +0000 |
commit | c88ad532ad942c957fe69e7047d6fc5e84dc1a4a (patch) | |
tree | 221a5f86cebb2513b1911d52d4956b141f40784e /xwayland/xwayland.c | |
parent | 911648f430f250daba2d3467b97cf63102b1355c (diff) |
backend/wayland: don't cache next item when destroying buffers
Because wl_buffer.release is per-buffer and not per-commit, the
Wayland backend might create multiple struct wlr_wl_buffer per
struct wlr_buffer. As a result, the wlr_buffer_unlock() call inside
destroy_wl_buffer() can cause another struct wlr_wl_buffer to be
destroyed.
In backend_destroy() we were iterating the list of buffers with
wl_list_for_each_safe(), which is actually not safe in this case:
the next buffer is cached, but might be destroyed as a side-effect
of calling destroy_wl_buffer().
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3572
Diffstat (limited to 'xwayland/xwayland.c')
0 files changed, 0 insertions, 0 deletions