aboutsummaryrefslogtreecommitdiff
path: root/xcursor
diff options
context:
space:
mode:
authorAntonin Décimo <antonin.decimo@gmail.com>2019-08-09 16:48:33 +0200
committerDrew DeVault <sir@cmpwn.com>2019-08-12 09:37:21 +0900
commit820800a5aba9172c8639e97b4de0503b35eb9aa2 (patch)
tree8e401f383659189e4f8d0ee74632c072aa65b9c4 /xcursor
parentc1be9b6945f9c664fe694a09620758db9ca695e9 (diff)
xcursor: avoid leak and loss of all cursors if cursors realloc fails
Diffstat (limited to 'xcursor')
-rw-r--r--xcursor/wlr_xcursor.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/xcursor/wlr_xcursor.c b/xcursor/wlr_xcursor.c
index d651497b..4e1d02ec 100644
--- a/xcursor/wlr_xcursor.c
+++ b/xcursor/wlr_xcursor.c
@@ -196,15 +196,17 @@ static void load_callback(XcursorImages *images, void *data) {
cursor = xcursor_create_from_xcursor_images(images, theme);
if (cursor) {
+ struct wlr_xcursor **cursors;
theme->cursor_count++;
- theme->cursors =
+ cursors =
realloc(theme->cursors,
theme->cursor_count * sizeof(theme->cursors[0]));
- if (theme->cursors == NULL) {
+ if (cursors == NULL) {
theme->cursor_count--;
free(cursor);
} else {
+ theme->cursors = cursors;
theme->cursors[theme->cursor_count - 1] = cursor;
}
}