diff options
author | Kristian Høgsberg <krh@bitplanet.net> | 2013-08-06 09:50:14 -0700 |
---|---|---|
committer | Kristian Høgsberg <krh@bitplanet.net> | 2013-08-06 09:51:53 -0700 |
commit | 1b0cabfc48cf4c13fec95f749d3b44050fe9ff79 (patch) | |
tree | 8c7a3b796abd1c8d5a5ac50c9feb0f7db8cdb78a | |
parent | c1fd097cd995ec02cfcf673fa243f95d4439bac2 (diff) |
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.
-rw-r--r-- | src/wayland-server.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/wayland-server.c b/src/wayland-server.c index 0a6e112..b74f87a 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, |