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