aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backend/libinput/events.c5
-rw-r--r--backend/session/session.c2
-rw-r--r--rootston/config.c2
-rw-r--r--rootston/cursor.c2
-rw-r--r--rootston/keyboard.c1
-rw-r--r--rootston/seat.c1
-rw-r--r--types/wlr_data_device.c5
-rw-r--r--types/wlr_keyboard.c5
-rw-r--r--types/wlr_screenshooter.c3
-rw-r--r--types/wlr_wl_shell.c2
10 files changed, 19 insertions, 9 deletions
diff --git a/backend/libinput/events.c b/backend/libinput/events.c
index 5da45c67..3ca41124 100644
--- a/backend/libinput/events.c
+++ b/backend/libinput/events.c
@@ -66,10 +66,11 @@ static void handle_device_added(struct wlr_libinput_backend *backend,
int product = libinput_device_get_id_product(libinput_dev);
const char *name = libinput_device_get_name(libinput_dev);
struct wl_list *wlr_devices = calloc(1, sizeof(struct wl_list));
- wl_list_init(wlr_devices);
if (!wlr_devices) {
- goto fail;
+ wlr_log(L_ERROR, "Allocation failed");
+ return;
}
+ wl_list_init(wlr_devices);
wlr_log(L_DEBUG, "Added %s [%d:%d]", name, vendor, product);
if (libinput_device_has_capability(libinput_dev, LIBINPUT_DEVICE_CAP_KEYBOARD)) {
diff --git a/backend/session/session.c b/backend/session/session.c
index 760830c3..657558fd 100644
--- a/backend/session/session.c
+++ b/backend/session/session.c
@@ -249,7 +249,7 @@ static size_t explicit_find_gpus(struct wlr_session *session,
}
} while ((ptr = strtok_r(NULL, ":", &save)));
- free(ptr);
+ free(gpus);
return i;
}
diff --git a/rootston/config.c b/rootston/config.c
index 7ffbb786..727b52d0 100644
--- a/rootston/config.c
+++ b/rootston/config.c
@@ -405,7 +405,7 @@ void roots_config_destroy(struct roots_config *config) {
}
struct roots_keyboard_config *kc, *ktmp = NULL;
- wl_list_for_each_safe(kc, ktmp, &config->bindings, link) {
+ wl_list_for_each_safe(kc, ktmp, &config->keyboards, link) {
free(kc->name);
free(kc->rules);
free(kc->model);
diff --git a/rootston/cursor.c b/rootston/cursor.c
index ecd5e9a0..5949a364 100644
--- a/rootston/cursor.c
+++ b/rootston/cursor.c
@@ -18,9 +18,9 @@ struct roots_cursor *roots_cursor_create(struct roots_seat *seat) {
}
cursor->cursor = wlr_cursor_create();
if (!cursor->cursor) {
+ free(cursor);
return NULL;
}
-
return cursor;
}
diff --git a/rootston/keyboard.c b/rootston/keyboard.c
index c118e55c..fb648ae5 100644
--- a/rootston/keyboard.c
+++ b/rootston/keyboard.c
@@ -141,6 +141,7 @@ static bool keyboard_keysyms_xkb(struct roots_keyboard *keyboard,
uint32_t consumed = xkb_state_key_get_consumed_mods2(
keyboard->device->keyboard->xkb_state, keycode, XKB_CONSUMED_MODE_XKB);
+ // TODO: actually use this value
modifiers = modifiers & ~consumed;
bool handled = false;
diff --git a/rootston/seat.c b/rootston/seat.c
index 6d8dc749..1fa37c44 100644
--- a/rootston/seat.c
+++ b/rootston/seat.c
@@ -252,7 +252,6 @@ struct roots_seat *roots_seat_create(struct roots_input *input, char *name) {
seat->seat = wlr_seat_create(input->server->wl_display, name);
if (!seat->seat) {
free(seat);
- roots_cursor_destroy(seat->cursor);
return NULL;
}
diff --git a/types/wlr_data_device.c b/types/wlr_data_device.c
index df18317b..4d926236 100644
--- a/types/wlr_data_device.c
+++ b/types/wlr_data_device.c
@@ -636,7 +636,10 @@ static void data_device_start_drag(struct wl_client *client,
if (!seat_client_start_drag(seat_client, source, icon)) {
wl_resource_post_no_memory(device_resource);
- } else {
+ return;
+ }
+
+ if (source) {
source->seat_client = seat_client;
}
}
diff --git a/types/wlr_keyboard.c b/types/wlr_keyboard.c
index 98ebeed5..c4f2ed52 100644
--- a/types/wlr_keyboard.c
+++ b/types/wlr_keyboard.c
@@ -105,7 +105,10 @@ void wlr_keyboard_init(struct wlr_keyboard *kb,
}
void wlr_keyboard_destroy(struct wlr_keyboard *kb) {
- if (kb && kb->impl && kb->impl->destroy) {
+ if (kb == NULL) {
+ return;
+ }
+ if (kb->impl && kb->impl->destroy) {
kb->impl->destroy(kb);
} else {
wl_list_remove(&kb->events.key.listener_list);
diff --git a/types/wlr_screenshooter.c b/types/wlr_screenshooter.c
index a78c7ad7..94b45384 100644
--- a/types/wlr_screenshooter.c
+++ b/types/wlr_screenshooter.c
@@ -85,6 +85,7 @@ static void screenshooter_shoot(struct wl_client *client,
struct wlr_screenshot *screenshot =
calloc(1, sizeof(struct wlr_screenshot));
if (!screenshot) {
+ free(pixels);
wl_resource_post_no_memory(screenshooter_resource);
return;
}
@@ -96,6 +97,7 @@ static void screenshooter_shoot(struct wl_client *client,
wl_resource_get_version(screenshooter_resource), id);
if (screenshot->resource == NULL) {
free(screenshot);
+ free(pixels);
wl_resource_post_no_memory(screenshooter_resource);
return;
}
@@ -109,6 +111,7 @@ static void screenshooter_shoot(struct wl_client *client,
if (!state) {
wl_resource_destroy(screenshot->resource);
free(screenshot);
+ free(pixels);
wl_resource_post_no_memory(screenshooter_resource);
return;
}
diff --git a/types/wlr_wl_shell.c b/types/wlr_wl_shell.c
index 31032fef..abe967d7 100644
--- a/types/wlr_wl_shell.c
+++ b/types/wlr_wl_shell.c
@@ -347,7 +347,7 @@ static void shell_surface_protocol_set_popup(struct wl_client *client,
transient_state->flags = flags;
struct wlr_wl_shell_surface_popup_state *popup_state =
- calloc(1, sizeof(struct wlr_wl_shell_surface_transient_state));
+ calloc(1, sizeof(struct wlr_wl_shell_surface_popup_state));
if (popup_state == NULL) {
free(transient_state);
wl_client_post_no_memory(client);