mirror of
https://github.com/swaywm/sway.git
synced 2024-12-30 17:06:40 +01:00
Merge pull request #2289 from frsfnrrg/memory-fixes
Fix memory leaks and reference to uninitialized
This commit is contained in:
commit
bec982bba6
5 changed files with 17 additions and 10 deletions
|
@ -24,6 +24,7 @@
|
||||||
#include "sway/input/seat.h"
|
#include "sway/input/seat.h"
|
||||||
#include "sway/commands.h"
|
#include "sway/commands.h"
|
||||||
#include "sway/config.h"
|
#include "sway/config.h"
|
||||||
|
#include "sway/criteria.h"
|
||||||
#include "sway/tree/arrange.h"
|
#include "sway/tree/arrange.h"
|
||||||
#include "sway/tree/layout.h"
|
#include "sway/tree/layout.h"
|
||||||
#include "sway/tree/workspace.h"
|
#include "sway/tree/workspace.h"
|
||||||
|
@ -105,7 +106,12 @@ void free_config(struct sway_config *config) {
|
||||||
}
|
}
|
||||||
list_free(config->seat_configs);
|
list_free(config->seat_configs);
|
||||||
}
|
}
|
||||||
list_free(config->criteria);
|
if (config->criteria) {
|
||||||
|
for (int i = 0; i < config->criteria->length; ++i) {
|
||||||
|
criteria_destroy(config->criteria->items[i]);
|
||||||
|
}
|
||||||
|
list_free(config->criteria);
|
||||||
|
}
|
||||||
list_free(config->no_focus);
|
list_free(config->no_focus);
|
||||||
list_free(config->active_bar_modifiers);
|
list_free(config->active_bar_modifiers);
|
||||||
list_free(config->config_chain);
|
list_free(config->config_chain);
|
||||||
|
|
|
@ -37,7 +37,7 @@ void criteria_destroy(struct criteria *criteria) {
|
||||||
pcre_free(criteria->con_mark);
|
pcre_free(criteria->con_mark);
|
||||||
pcre_free(criteria->window_role);
|
pcre_free(criteria->window_role);
|
||||||
free(criteria->workspace);
|
free(criteria->workspace);
|
||||||
|
free(criteria->cmdlist);
|
||||||
free(criteria->raw);
|
free(criteria->raw);
|
||||||
free(criteria);
|
free(criteria);
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,6 +67,7 @@ struct sway_idle_inhibit_manager_v1 *sway_idle_inhibit_manager_v1_create(
|
||||||
|
|
||||||
manager->wlr_manager = wlr_idle_inhibit_v1_create(wl_display);
|
manager->wlr_manager = wlr_idle_inhibit_v1_create(wl_display);
|
||||||
if (!manager->wlr_manager) {
|
if (!manager->wlr_manager) {
|
||||||
|
free(manager);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
manager->idle = idle;
|
manager->idle = idle;
|
||||||
|
|
|
@ -325,12 +325,6 @@ void handle_layer_shell_surface(struct wl_listener *listener, void *data) {
|
||||||
layer_surface->client_pending.margin.bottom,
|
layer_surface->client_pending.margin.bottom,
|
||||||
layer_surface->client_pending.margin.left);
|
layer_surface->client_pending.margin.left);
|
||||||
|
|
||||||
struct sway_layer_surface *sway_layer =
|
|
||||||
calloc(1, sizeof(struct sway_layer_surface));
|
|
||||||
if (!sway_layer) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!layer_surface->output) {
|
if (!layer_surface->output) {
|
||||||
// Assign last active output
|
// Assign last active output
|
||||||
struct sway_container *output = NULL;
|
struct sway_container *output = NULL;
|
||||||
|
@ -352,6 +346,12 @@ void handle_layer_shell_surface(struct wl_listener *listener, void *data) {
|
||||||
layer_surface->output = output->sway_output->wlr_output;
|
layer_surface->output = output->sway_output->wlr_output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct sway_layer_surface *sway_layer =
|
||||||
|
calloc(1, sizeof(struct sway_layer_surface));
|
||||||
|
if (!sway_layer) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
sway_layer->surface_commit.notify = handle_surface_commit;
|
sway_layer->surface_commit.notify = handle_surface_commit;
|
||||||
wl_signal_add(&layer_surface->surface->events.commit,
|
wl_signal_add(&layer_surface->surface->events.commit,
|
||||||
&sway_layer->surface_commit);
|
&sway_layer->surface_commit);
|
||||||
|
|
|
@ -621,16 +621,16 @@ void view_unmap(struct sway_view *view) {
|
||||||
view->urgent_timer = NULL;
|
view->urgent_timer = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct sway_container *parent;
|
|
||||||
struct sway_container *ws = container_parent(view->swayc, C_WORKSPACE);
|
struct sway_container *ws = container_parent(view->swayc, C_WORKSPACE);
|
||||||
|
|
||||||
|
struct sway_container *parent;
|
||||||
if (view->is_fullscreen) {
|
if (view->is_fullscreen) {
|
||||||
ws->sway_workspace->fullscreen = NULL;
|
ws->sway_workspace->fullscreen = NULL;
|
||||||
parent = container_destroy(view->swayc);
|
parent = container_destroy(view->swayc);
|
||||||
|
|
||||||
arrange_windows(ws->parent);
|
arrange_windows(ws->parent);
|
||||||
} else {
|
} else {
|
||||||
struct sway_container *parent = container_destroy(view->swayc);
|
parent = container_destroy(view->swayc);
|
||||||
arrange_windows(parent);
|
arrange_windows(parent);
|
||||||
}
|
}
|
||||||
if (parent->type >= C_WORKSPACE) { // if the workspace still exists
|
if (parent->type >= C_WORKSPACE) { // if the workspace still exists
|
||||||
|
|
Loading…
Reference in a new issue