fix code style issues and memory leak

This commit is contained in:
Felipe Trzaskowski 2021-03-13 07:41:05 -03:00
parent 3ed9314266
commit 2dc13cc13b

View file

@ -50,10 +50,7 @@ struct client {
struct terminal_instance *instance; struct terminal_instance *instance;
}; };
static void static void client_destroy(struct client *client);
client_destroy(struct client *client);
static void
client_send_exit_code(struct client *client, int exit_code);
struct terminal_instance { struct terminal_instance {
struct terminal *terminal; struct terminal *terminal;
@ -61,8 +58,7 @@ struct terminal_instance {
struct client *client; struct client *client;
struct config conf; struct config conf;
}; };
static void static void instance_destroy(struct terminal_instance *instance, int exit_code);
instance_destroy(struct terminal_instance *instance, int exit_code);
static void static void
client_destroy(struct client *client) client_destroy(struct client *client)
@ -105,9 +101,8 @@ client_send_exit_code(struct client *client, int exit_code)
static void static void
instance_destroy(struct terminal_instance *instance, int exit_code) instance_destroy(struct terminal_instance *instance, int exit_code)
{ {
if (instance->terminal != NULL) { if (instance->terminal != NULL)
term_destroy(instance->terminal); term_destroy(instance->terminal);
}
tll_foreach(instance->server->terminals, it) { tll_foreach(instance->server->terminals, it) {
if (it->item == instance) { if (it->item == instance) {
@ -117,7 +112,6 @@ instance_destroy(struct terminal_instance *instance, int exit_code)
} }
if (instance->client != NULL) { if (instance->client != NULL) {
LOG_WARN("client FD=%d: is still alive", instance->client->fd);
instance->client->instance = NULL; instance->client->instance = NULL;
client_send_exit_code(instance->client, exit_code); client_send_exit_code(instance->client, exit_code);
client_destroy(instance->client); client_destroy(instance->client);
@ -287,6 +281,7 @@ fdm_client(struct fdm *fdm, int fd, int events, void *data)
struct terminal_instance *instance = malloc(sizeof(struct terminal_instance)); struct terminal_instance *instance = malloc(sizeof(struct terminal_instance));
*instance = (struct terminal_instance) { *instance = (struct terminal_instance) {
.client = NULL,
.server = server, .server = server,
.conf = *server->conf, .conf = *server->conf,
}; };
@ -331,6 +326,7 @@ fdm_client(struct fdm *fdm, int fd, int events, void *data)
// the instance is attached to the client // the instance is attached to the client
instance->client = client; instance->client = client;
client->instance = instance; client->instance = instance;
free(argv);
} }
return true; return true;
@ -418,7 +414,6 @@ err:
return ret; return ret;
} }
struct server * struct server *
server_init(const struct config *conf, struct fdm *fdm, struct reaper *reaper, server_init(const struct config *conf, struct fdm *fdm, struct reaper *reaper,
struct wayland *wayl) struct wayland *wayl)
@ -492,7 +487,6 @@ err:
return NULL; return NULL;
} }
void void
server_destroy(struct server *server) server_destroy(struct server *server)
{ {
@ -506,11 +500,12 @@ server_destroy(struct server *server)
client_send_exit_code(it->item, 1); client_send_exit_code(it->item, 1);
client_destroy(it->item); client_destroy(it->item);
} }
tll_free(server->clients); tll_free(server->clients);
tll_foreach(server->terminals, it) { tll_foreach(server->terminals, it)
instance_destroy(it->item, 1); instance_destroy(it->item, 1);
}
tll_free(server->terminals); tll_free(server->terminals);
fdm_del(server->fdm, server->fd); fdm_del(server->fdm, server->fd);