summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorU. Artie Eoff <ullysses.a.eoff@intel.com>2014-05-21 09:20:02 -0700
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>2014-05-23 09:57:02 +0300
commita1e887bd4648a8117593e8bfcf4a574f3bd837d6 (patch)
treed9d436215a2a798bd708447c0c772a824939f0ed
parentcaa70193177ddead97bd686c4669c7696a5538f0 (diff)
comp-wayland: use safe foreach when destroying outputs
wl_list_for_each dereference's output to increment the next iteration of the loop. However, output is free'd inside the loop resulting in a dereference to free'd memory. Use wl_list_for_each_safe instead, which is designed to handle this kind of pattern. Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com> Reviewed-by: Thierry Reding <thierry.reding@gmail.com> Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-rw-r--r--src/compositor-wayland.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/compositor-wayland.c b/src/compositor-wayland.c
index a08b71ab..76e5396f 100644
--- a/src/compositor-wayland.c
+++ b/src/compositor-wayland.c
@@ -1997,9 +1997,9 @@ err_free:
static void
wayland_compositor_destroy(struct wayland_compositor *c)
{
- struct weston_output *output;
+ struct weston_output *output, *next;
- wl_list_for_each(output, &c->base.output_list, link)
+ wl_list_for_each_safe(output, next, &c->base.output_list, link)
wayland_output_destroy(output);
c->base.renderer->destroy(&c->base);