summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorElvis Lee <kwangwoong.lee@lge.com>2012-09-12 16:44:09 +0900
committerJørgen Lind <jorgen.lind@nokia.com>2012-09-12 14:57:47 +0200
commit6c62ffa430feddf0d539519c5b7e4b2b5f7183cb (patch)
tree781f07889948451ce789412a70748817b4e54173 /src
parent1d56a6fbe6b849a35603415b94b5eae21784f0d9 (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')
-rw-r--r--src/compositor/wayland_wrapper/wlsurface.cpp4
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);
}