aboutsummaryrefslogtreecommitdiffstats
path: root/src/wayland-server.c
diff options
context:
space:
mode:
authorAleksandr Mezin <mezin.alexander@gmail.com>2022-02-09 05:36:11 +0600
committerSimon Ser <contact@emersion.fr>2022-03-25 09:43:53 +0000
commit884d5fe3abc98c8b97f71974752ff9f9a3056e8e (patch)
tree43cd9746ef1ca29607de6c8f50aec2f6125a4544 /src/wayland-server.c
parentutil: set errno in wl_map_reserve_new() (diff)
downloadwayland-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.c18
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;
}