diff options
| author | Aleksandr Mezin <mezin.alexander@gmail.com> | 2022-02-09 05:36:11 +0600 |
|---|---|---|
| committer | Simon Ser <contact@emersion.fr> | 2022-03-25 09:43:53 +0000 |
| commit | 884d5fe3abc98c8b97f71974752ff9f9a3056e8e (patch) | |
| tree | 43cd9746ef1ca29607de6c8f50aec2f6125a4544 /src/wayland-server.c | |
| parent | util: set errno in wl_map_reserve_new() (diff) | |
| download | wayland-884d5fe3abc98c8b97f71974752ff9f9a3056e8e.tar wayland-884d5fe3abc98c8b97f71974752ff9f9a3056e8e.tar.gz wayland-884d5fe3abc98c8b97f71974752ff9f9a3056e8e.tar.bz2 wayland-884d5fe3abc98c8b97f71974752ff9f9a3056e8e.tar.lz wayland-884d5fe3abc98c8b97f71974752ff9f9a3056e8e.tar.xz wayland-884d5fe3abc98c8b97f71974752ff9f9a3056e8e.tar.zst wayland-884d5fe3abc98c8b97f71974752ff9f9a3056e8e.zip | |
util: set errno in wl_map_insert_at()
And add errno checks in callers, where it seems to be necessary.
Signed-off-by: Aleksandr Mezin <mezin.alexander@gmail.com>
Diffstat (limited to 'src/wayland-server.c')
| -rw-r--r-- | src/wayland-server.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/wayland-server.c b/src/wayland-server.c index 5edbc9c..9fc337b 100644 --- a/src/wayland-server.c +++ b/src/wayland-server.c @@ -1843,9 +1843,11 @@ wl_resource_create(struct wl_client *client, resource->dispatcher = NULL; if (wl_map_insert_at(&client->objects, 0, id, resource) < 0) { - wl_resource_post_error(client->display_resource, - WL_DISPLAY_ERROR_INVALID_OBJECT, - "invalid new id %d", id); + if (errno == EINVAL) { + wl_resource_post_error(client->display_resource, + WL_DISPLAY_ERROR_INVALID_OBJECT, + "invalid new id %d", id); + } free(resource); return NULL; } @@ -2240,10 +2242,12 @@ wl_client_add_resource(struct wl_client *client, WL_MAP_ENTRY_LEGACY, resource); } else if (wl_map_insert_at(&client->objects, WL_MAP_ENTRY_LEGACY, resource->object.id, resource) < 0) { - wl_resource_post_error(client->display_resource, - WL_DISPLAY_ERROR_INVALID_OBJECT, - "invalid new id %d", - resource->object.id); + if (errno == EINVAL) { + wl_resource_post_error(client->display_resource, + WL_DISPLAY_ERROR_INVALID_OBJECT, + "invalid new id %d", + resource->object.id); + } return 0; } |
