diff options
author | Elvis Lee <kwangwoong.lee@lge.com> | 2012-09-12 16:44:09 +0900 |
---|---|---|
committer | Jørgen Lind <jorgen.lind@nokia.com> | 2012-09-12 14:57:47 +0200 |
commit | 6c62ffa430feddf0d539519c5b7e4b2b5f7183cb (patch) | |
tree | 781f07889948451ce789412a70748817b4e54173 /src/compositor/wayland_wrapper | |
parent | 1d56a6fbe6b849a35603415b94b5eae21784f0d9 (diff) |
use wl_list_for_each_safe instead of wl_list_for_each
frame_callback may has invalid value if it's freed heap area
is overwritten after wl_resource_destroy
Change-Id: I61d6484857624e9c379ec96e85903e86b55531e0
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
Diffstat (limited to 'src/compositor/wayland_wrapper')
-rw-r--r-- | src/compositor/wayland_wrapper/wlsurface.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/compositor/wayland_wrapper/wlsurface.cpp b/src/compositor/wayland_wrapper/wlsurface.cpp index 87f7eae95..34c1127db 100644 --- a/src/compositor/wayland_wrapper/wlsurface.cpp +++ b/src/compositor/wayland_wrapper/wlsurface.cpp @@ -236,8 +236,8 @@ void Surface::sendFrameCallback() bool updateNeeded = advanceBufferQueue(); uint time = Compositor::currentTimeMsecs(); - struct wl_resource *frame_callback; - wl_list_for_each(frame_callback, &m_frame_callback_list, link) { + struct wl_resource *frame_callback, *next; + wl_list_for_each_safe(frame_callback, next, &m_frame_callback_list, link) { wl_callback_send_done(frame_callback, time); wl_resource_destroy(frame_callback); } |