diff --git a/src/song_save.c b/src/song_save.c index 1d2724e83..8f4e1614d 100644 --- a/src/song_save.c +++ b/src/song_save.c @@ -80,7 +80,8 @@ insertSongIntoList(struct songvec *sv, struct song *newsong) tag_end_add(newsong->tag); } else { /* prevent dupes, just update the existing song info */ if (existing->mtime != newsong->mtime) { - tag_free(existing->tag); + if (existing->tag != NULL) + tag_free(existing->tag); if (newsong->tag) tag_end_add(newsong->tag); existing->tag = newsong->tag; diff --git a/src/tag.c b/src/tag.c index a75ef6ba5..34205d20d 100644 --- a/src/tag.c +++ b/src/tag.c @@ -163,6 +163,8 @@ void tag_free(struct tag *tag) { int i; + assert(tag != NULL); + g_mutex_lock(tag_pool_lock); for (i = tag->num_items; --i >= 0; ) tag_pool_put_item(tag->items[i]);