diff --git a/src/database/queue.c b/src/database/queue.c
index 3559d3f2f2d4dd3435ba306eb78951b6a57d698c..0ddba99071590b562f67472b12064b933cec9c50 100644
--- a/src/database/queue.c
+++ b/src/database/queue.c
@@ -293,7 +293,8 @@ database_queue_del_id(volatile sqlite3 *db, int id)
 {
     static const char *SQL_TEMPLATE =
         "BEGIN TRANSACTION;"
-        "CREATE TEMPORARY TABLE queue_tmp (position INTEGER, kara_id INTEGER, priority INTEGER);"
+        "CREATE TEMPORARY TABLE IF NOT EXISTS queue_tmp (position INTEGER, kara_id INTEGER, priority INTEGER);"
+        "DELETE FROM queue_tmp;"
         /* Move the current 'pointer' */
         "UPDATE queue_state SET current = (SELECT NULLIF(COUNT(position), 0) FROM queue JOIN queue_state ON position <= current AND kara_id != %d);"
         "DELETE FROM queue WHERE kara_id = %d;"                                                 /* Delete any kara with the specified id */
@@ -301,7 +302,6 @@ database_queue_del_id(volatile sqlite3 *db, int id)
         "DELETE FROM queue;"
         "INSERT INTO queue(priority, position, kara_id) SELECT priority, ROW_NUMBER() OVER(ORDER BY position ASC), kara_id FROM queue_tmp;"
         "UPDATE sqlite_sequence SET seq = (SELECT COUNT(*) FROM queue) WHERE name = 'queue';"   /* Update the sqlite_sequence            */
-        "DROP TABLE queue_tmp;"                                                                 /* Erase queue_tmp                       */
         "COMMIT;";
     char SQL[LKT_MAX_SQLITE_STATEMENT];
     safe_snprintf(SQL, LKT_MAX_SQLITE_STATEMENT, SQL_TEMPLATE, id, id);
diff --git a/src/main/server.c b/src/main/server.c
index 5a5d969dd6487941697b4b29b4fe2d8c582ed7fc..ba5f5febcfb84429c6a16d5179d129b8f8fe8c23 100644
--- a/src/main/server.c
+++ b/src/main/server.c
@@ -49,8 +49,6 @@ __garbage_collect(void)
         free(kara_dir);
     if (conf_file)
         free(conf_file);
-    if (srv.win.free)
-        srv.win.free(&srv.win);
     LOG_INFO_SCT("GARBAGE", "%s", "Cleaning a bit with global variables");
 }