diff options
author | Jonas Ådahl <[email protected]> | 2012-12-25 13:01:08 +0100 |
---|---|---|
committer | Kristian Høgsberg <[email protected]> | 2013-01-03 11:44:55 -0500 |
commit | 800ed958c33092d694686fcc25c0283dfba86459 (patch) | |
tree | 5ee4cb699b871f26d0c73d8d8ea2a50da3f3254c /src/egl | |
parent | 622d96aae499445f12861214354a5b9f63e3a738 (diff) |
wayland: Don't cancel a roundtrip when any event is received
Since wl_display_dispatch_queue() returns the number of processed events
or -1 on error, only cancel the roundtrip if an -1 is returned.
This also fixes a potential memory corruption bug happening when the
roundtrip does an early return and the callback later writes to the then
out of scope stack allocated `done' parameter.
Reviewed-by: Kristian Høgsberg <[email protected]>
Diffstat (limited to 'src/egl')
-rw-r--r-- | src/egl/drivers/dri2/platform_wayland.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c index ba54286b7bc..10a0f0830d8 100644 --- a/src/egl/drivers/dri2/platform_wayland.c +++ b/src/egl/drivers/dri2/platform_wayland.c @@ -70,6 +70,9 @@ roundtrip(struct dri2_egl_display *dri2_dpy) while (ret != -1 && !done) ret = wl_display_dispatch_queue(dri2_dpy->wl_dpy, dri2_dpy->wl_queue); + if (!done) + wl_callback_destroy(callback); + return ret; } |