[RFC wayland 03/12] wayland-util: return -1 on OOM in wl_map_insert_new()
David Herrmann
dh.herrmann at googlemail.com
Thu Oct 11 14:37:44 PDT 2012
If we cannot increase the array for new entries, we now return -1 instead
of accessing invalid memory.
Signed-off-by: David Herrmann <dh.herrmann at googlemail.com>
---
src/wayland-private.h | 2 +-
src/wayland-util.c | 4 +++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/wayland-private.h b/src/wayland-private.h
index 8adee9f..406dd39 100644
--- a/src/wayland-private.h
+++ b/src/wayland-private.h
@@ -44,7 +44,7 @@ typedef void (*wl_iterator_func_t)(void *element, void *data);
void wl_map_init(struct wl_map *map);
void wl_map_release(struct wl_map *map);
-uint32_t wl_map_insert_new(struct wl_map *map, uint32_t side, void *data);
+int32_t wl_map_insert_new(struct wl_map *map, uint32_t side, void *data);
int wl_map_insert_at(struct wl_map *map, uint32_t i, void *data);
int wl_map_reserve_new(struct wl_map *map, uint32_t i);
void wl_map_remove(struct wl_map *map, uint32_t i);
diff --git a/src/wayland-util.c b/src/wayland-util.c
index 158f5a5..0ea6f58 100644
--- a/src/wayland-util.c
+++ b/src/wayland-util.c
@@ -164,7 +164,7 @@ wl_map_release(struct wl_map *map)
wl_array_release(&map->server_entries);
}
-WL_EXPORT uint32_t
+WL_EXPORT int32_t
wl_map_insert_new(struct wl_map *map, uint32_t side, void *data)
{
union map_entry *start, *entry;
@@ -185,6 +185,8 @@ wl_map_insert_new(struct wl_map *map, uint32_t side, void *data)
map->free_list = entry->next;
} else {
entry = wl_array_add(entries, sizeof *entry);
+ if (!entry)
+ return -1;
start = entries->data;
}
--
1.7.12.2
More information about the wayland-devel
mailing list