Fix memory leaks
This commit is contained in:
parent
92db362406
commit
2ff13c0508
20
src/main.c
20
src/main.c
@ -75,6 +75,8 @@ int _parse_music_helper(
|
|||||||
struct bl_song song_analysis;
|
struct bl_song song_analysis;
|
||||||
if (BL_UNEXPECTED == bl_analyze(song_full_uri, &song_analysis)) {
|
if (BL_UNEXPECTED == bl_analyze(song_full_uri, &song_analysis)) {
|
||||||
fprintf(stderr, "Error while parsing song: %s.\n\n", song_full_uri);
|
fprintf(stderr, "Error while parsing song: %s.\n\n", song_full_uri);
|
||||||
|
// Free song analysis
|
||||||
|
bl_free_song(&song_analysis);
|
||||||
// Store error in db
|
// Store error in db
|
||||||
sqlite3_prepare_v2(dbh,
|
sqlite3_prepare_v2(dbh,
|
||||||
"INSERT INTO errors(filename) VALUES(?)",
|
"INSERT INTO errors(filename) VALUES(?)",
|
||||||
@ -90,6 +92,8 @@ int _parse_music_helper(
|
|||||||
int dberr = sqlite3_exec(dbh, "BEGIN TRANSACTION", NULL, NULL, NULL);
|
int dberr = sqlite3_exec(dbh, "BEGIN TRANSACTION", NULL, NULL, NULL);
|
||||||
if (SQLITE_OK != dberr) {
|
if (SQLITE_OK != dberr) {
|
||||||
fprintf(stderr, "Error while inserting data in db: %s\n\n", sqlite3_errmsg(dbh));
|
fprintf(stderr, "Error while inserting data in db: %s\n\n", sqlite3_errmsg(dbh));
|
||||||
|
// Free song analysis
|
||||||
|
bl_free_song(&song_analysis);
|
||||||
sqlite3_exec(dbh, "ROLLBACK", NULL, NULL, NULL);
|
sqlite3_exec(dbh, "ROLLBACK", NULL, NULL, NULL);
|
||||||
// Store error in db
|
// Store error in db
|
||||||
sqlite3_prepare_v2(dbh,
|
sqlite3_prepare_v2(dbh,
|
||||||
@ -107,6 +111,8 @@ int _parse_music_helper(
|
|||||||
-1, &res, 0);
|
-1, &res, 0);
|
||||||
if (SQLITE_OK != dberr) {
|
if (SQLITE_OK != dberr) {
|
||||||
fprintf(stderr, "Error while inserting data in db: %s\n\n", sqlite3_errmsg(dbh));
|
fprintf(stderr, "Error while inserting data in db: %s\n\n", sqlite3_errmsg(dbh));
|
||||||
|
// Free song analysis
|
||||||
|
bl_free_song(&song_analysis);
|
||||||
sqlite3_exec(dbh, "ROLLBACK", NULL, NULL, NULL);
|
sqlite3_exec(dbh, "ROLLBACK", NULL, NULL, NULL);
|
||||||
// Store error in db
|
// Store error in db
|
||||||
sqlite3_prepare_v2(dbh,
|
sqlite3_prepare_v2(dbh,
|
||||||
@ -130,6 +136,8 @@ int _parse_music_helper(
|
|||||||
dberr = sqlite3_prepare_v2(dbh, "SELECT id, tempo, amplitude, frequency, attack FROM songs", -1, &res, 0);
|
dberr = sqlite3_prepare_v2(dbh, "SELECT id, tempo, amplitude, frequency, attack FROM songs", -1, &res, 0);
|
||||||
if (SQLITE_OK != dberr) {
|
if (SQLITE_OK != dberr) {
|
||||||
fprintf(stderr, "Error while inserting data in db: %s\n\n", sqlite3_errmsg(dbh));
|
fprintf(stderr, "Error while inserting data in db: %s\n\n", sqlite3_errmsg(dbh));
|
||||||
|
// Free song analysis
|
||||||
|
bl_free_song(&song_analysis);
|
||||||
sqlite3_exec(dbh, "ROLLBACK", NULL, NULL, NULL);
|
sqlite3_exec(dbh, "ROLLBACK", NULL, NULL, NULL);
|
||||||
// Store error in db
|
// Store error in db
|
||||||
sqlite3_prepare_v2(dbh,
|
sqlite3_prepare_v2(dbh,
|
||||||
@ -170,6 +178,8 @@ int _parse_music_helper(
|
|||||||
sqlite3_finalize(res2);
|
sqlite3_finalize(res2);
|
||||||
}
|
}
|
||||||
if (SQLITE_OK != dberr2) {
|
if (SQLITE_OK != dberr2) {
|
||||||
|
// Free song analysis
|
||||||
|
bl_free_song(&song_analysis);
|
||||||
sqlite3_exec(dbh, "ROLLBACK", NULL, NULL, NULL);
|
sqlite3_exec(dbh, "ROLLBACK", NULL, NULL, NULL);
|
||||||
// Store error in db
|
// Store error in db
|
||||||
sqlite3_prepare_v2(dbh,
|
sqlite3_prepare_v2(dbh,
|
||||||
@ -186,6 +196,8 @@ int _parse_music_helper(
|
|||||||
dberr = sqlite3_exec(dbh, "COMMIT", NULL, NULL, NULL);
|
dberr = sqlite3_exec(dbh, "COMMIT", NULL, NULL, NULL);
|
||||||
if (SQLITE_OK != dberr) {
|
if (SQLITE_OK != dberr) {
|
||||||
fprintf(stderr, "Error while inserting data in db: %s\n\n", sqlite3_errmsg(dbh));
|
fprintf(stderr, "Error while inserting data in db: %s\n\n", sqlite3_errmsg(dbh));
|
||||||
|
// Free song analysis
|
||||||
|
bl_free_song(&song_analysis);
|
||||||
sqlite3_exec(dbh, "ROLLBACK", NULL, NULL, NULL);
|
sqlite3_exec(dbh, "ROLLBACK", NULL, NULL, NULL);
|
||||||
// Store error in db
|
// Store error in db
|
||||||
sqlite3_prepare_v2(dbh,
|
sqlite3_prepare_v2(dbh,
|
||||||
@ -198,6 +210,9 @@ int _parse_music_helper(
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Free song analysis
|
||||||
|
bl_free_song(&song_analysis);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -257,6 +272,7 @@ void update_database(
|
|||||||
// Compute bl_analyze and store it
|
// Compute bl_analyze and store it
|
||||||
const char *song_uri = mpd_song_get_uri(song);
|
const char *song_uri = mpd_song_get_uri(song);
|
||||||
if (1 == _parse_music_helper(dbh, mpd_base_path, song_uri)) {
|
if (1 == _parse_music_helper(dbh, mpd_base_path, song_uri)) {
|
||||||
|
mpd_entity_free(entity);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -460,6 +476,8 @@ int main(int argc, char** argv) {
|
|||||||
fprintf(stderr, "Error purging existing data in db: %s.\n", sqlite3_errmsg(dbh));
|
fprintf(stderr, "Error purging existing data in db: %s.\n", sqlite3_errmsg(dbh));
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
// Set last_mtime to 0
|
||||||
|
last_mtime = 0;
|
||||||
}
|
}
|
||||||
// Close db connection
|
// Close db connection
|
||||||
sqlite3_close(dbh);
|
sqlite3_close(dbh);
|
||||||
@ -469,7 +487,7 @@ int main(int argc, char** argv) {
|
|||||||
update_database(conn, last_mtime, mpd_base_path);
|
update_database(conn, last_mtime, mpd_base_path);
|
||||||
}
|
}
|
||||||
// Else, if we want to rescan errored files
|
// Else, if we want to rescan errored files
|
||||||
if (1 == args_info.rescan_errors_flag) {
|
else if (1 == args_info.rescan_errors_flag) {
|
||||||
rescan_errored(mpd_base_path);
|
rescan_errored(mpd_base_path);
|
||||||
}
|
}
|
||||||
// Else, if we requested an update of the db
|
// Else, if we requested an update of the db
|
||||||
|
Loading…
Reference in New Issue
Block a user