summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@bitplanet.net>2013-08-06 09:50:14 -0700
committerKristian Høgsberg <krh@bitplanet.net>2013-08-06 09:51:53 -0700
commit1b0cabfc48cf4c13fec95f749d3b44050fe9ff79 (patch)
tree8c7a3b796abd1c8d5a5ac50c9feb0f7db8cdb78a
parentc1fd097cd995ec02cfcf673fa243f95d4439bac2 (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.c8
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,