xcursor: avoid leak and loss of all cursors if cursors realloc fails

This commit is contained in:
Antonin Décimo 2019-08-09 16:48:33 +02:00 committed by Drew DeVault
parent c1be9b6945
commit 820800a5ab
1 changed files with 4 additions and 2 deletions

View File

@ -196,15 +196,17 @@ static void load_callback(XcursorImages *images, void *data) {
cursor = xcursor_create_from_xcursor_images(images, theme); cursor = xcursor_create_from_xcursor_images(images, theme);
if (cursor) { if (cursor) {
struct wlr_xcursor **cursors;
theme->cursor_count++; theme->cursor_count++;
theme->cursors = cursors =
realloc(theme->cursors, realloc(theme->cursors,
theme->cursor_count * sizeof(theme->cursors[0])); theme->cursor_count * sizeof(theme->cursors[0]));
if (theme->cursors == NULL) { if (cursors == NULL) {
theme->cursor_count--; theme->cursor_count--;
free(cursor); free(cursor);
} else { } else {
theme->cursors = cursors;
theme->cursors[theme->cursor_count - 1] = cursor; theme->cursors[theme->cursor_count - 1] = cursor;
} }
} }