From c0eb45286c636efcefc897894c95a284a53216d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Tue, 6 Aug 2013 09:50:14 -0700 Subject: [PATCH] server: Handle OOM properly when we fail to allocate a send closure If we can't allocate a closure, don't just silently continue. Set client->error so we shut down the client when we're done processing events. --- src/wayland-server.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/wayland-server.c b/src/wayland-server.c index 0a6e112f..b74f87ab 100644 --- a/src/wayland-server.c +++ b/src/wayland-server.c @@ -136,8 +136,10 @@ wl_resource_post_event(struct wl_resource *resource, uint32_t opcode, ...) &object->interface->events[opcode]); va_end(ap); - if (closure == NULL) + if (closure == NULL) { + resource->client->error = 1 return; + } if (wl_closure_send(closure, resource->client->connection)) wl_event_loop_add_idle(resource->client->display->loop, @@ -162,8 +164,10 @@ wl_resource_queue_event(struct wl_resource *resource, uint32_t opcode, ...) &object->interface->events[opcode]); va_end(ap); - if (closure == NULL) + if (closure == NULL) { + resource->client->error = 1 return; + } if (wl_closure_queue(closure, resource->client->connection)) wl_event_loop_add_idle(resource->client->display->loop,