From 6a1c3cad9762ebf96c5b967e3a8d3cddd3d18927 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Wed, 13 May 2020 20:34:18 +0200 Subject: [PATCH] Queue event is working, but still race condition at the moment --- src/commands.c | 2 +- src/net/listen.c | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/commands.c b/src/commands.c index 47155b92..d2db41c8 100644 --- a/src/commands.c +++ b/src/commands.c @@ -33,7 +33,7 @@ command_restart(struct lkt_state *srv, size_t c) database_queue_state(srv->db, &sta); lkt_queue_free(&srv->queue); env_set(LKT_ENV_RESTART, "1"); - int len = long_length(sta.current); + int len = long_length(LONG_MAX); if (len > 0) { char *pos = calloc(len, sizeof(char)); if (pos) { diff --git a/src/net/listen.c b/src/net/listen.c index 6fe36067..04c44682 100644 --- a/src/net/listen.c +++ b/src/net/listen.c @@ -718,18 +718,21 @@ static inline void handle_queue_events(struct lkt_state *srv) { lkt_event evt; - char string[BUFFER_MAX]; /* TODO: A less dirty bomb */ + char *string = calloc(BUFFER_MAX, sizeof(char)); + if (!string) + return; redo: evt = lkt_queue_handle(&srv->queue); switch (evt.type) { case lkt_event_play_pos: safe_snprintf(string, BUFFER_MAX, "%ld", (size_t) evt.attr); - command_play(srv->db, &srv->win, (char **) &string, &srv->mpd_idle_events); + command_play(srv->db, &srv->win, &string, &srv->mpd_idle_events); break; case lkt_event_null: default: + free(string); return; } goto redo; -- GitLab