diff --git a/src/db.c b/src/db.c index 56b57023..eddd1b58 100644 --- a/src/db.c +++ b/src/db.c @@ -734,12 +734,15 @@ db_purge_cruft(time_t ref) "DELETE FROM files WHERE -1 <> %d AND db_timestamp < %" PRIi64 ";", }; + db_transaction_begin(); + for (i = 0; i < (sizeof(queries_tmpl) / sizeof(queries_tmpl[0])); i++) { query = sqlite3_mprintf(queries_tmpl[i], PL_SPECIAL, (int64_t)ref); if (!query) { DPRINTF(E_LOG, L_DB, "Out of memory for query string\n"); + db_transaction_end(); return; } @@ -754,6 +757,7 @@ db_purge_cruft(time_t ref) if (!query) { DPRINTF(E_LOG, L_DB, "Out of memory for query string\n"); + db_transaction_end(); return; } @@ -763,6 +767,8 @@ db_purge_cruft(time_t ref) if (ret == 0) DPRINTF(E_DBG, L_DB, "Purged %d rows\n", sqlite3_changes(hdl)); + db_transaction_end(); + #undef Q_TMPL } diff --git a/src/filescanner.c b/src/filescanner.c index 0bceca82..76f33b50 100644 --- a/src/filescanner.c +++ b/src/filescanner.c @@ -1221,18 +1221,17 @@ bulk_scan(int flags) } else { - db_transaction_begin(); /* Protect spotify from the imminent purge if rescanning */ + db_transaction_begin(); db_file_ping_bymatch("spotify:", 0); db_pl_ping_bymatch("spotify:", 0); + db_transaction_end(); DPRINTF(E_DBG, L_SCAN, "Purging old database content\n"); db_purge_cruft(start); db_groups_cleanup(); db_queue_cleanup(); - db_transaction_end(); - cache_artwork_purge_cruft(start); DPRINTF(E_LOG, L_SCAN, "Bulk library scan completed in %.f sec\n", difftime(end, start));