diff --git a/src/commands.c b/src/commands.c index 47155b92a623f776baa90e50e584d4ef494577c5..d2db41c8adccebea328565ec7007798edc2e0c18 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 6fe36067c32de8868976a456802720e6fa5ddb2e..04c4468243375b70f78c537f1f0f307360bde628 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;