diff --git a/src/SongUpdate.cxx b/src/SongUpdate.cxx index aa9fe9c23..72714fa0f 100644 --- a/src/SongUpdate.cxx +++ b/src/SongUpdate.cxx @@ -109,12 +109,11 @@ Song::LoadFromArchive(ArchiveFile &archive, const char *name_utf8, bool Song::UpdateFileInArchive(ArchiveFile &archive) noexcept { - assert(parent != nullptr); - assert(parent->device == DEVICE_INARCHIVE); + assert(parent.device == DEVICE_INARCHIVE); std::string path_utf8(uri); - for (const Directory *directory = parent; + for (const Directory *directory = &parent; directory->parent != nullptr && directory->parent->device == DEVICE_INARCHIVE; directory = directory->parent) { diff --git a/src/db/plugins/simple/Directory.cxx b/src/db/plugins/simple/Directory.cxx index 2c1a5eced..e3821e259 100644 --- a/src/db/plugins/simple/Directory.cxx +++ b/src/db/plugins/simple/Directory.cxx @@ -167,7 +167,7 @@ Directory::AddSong(SongPtr song) noexcept { assert(holding_db_lock()); assert(song != nullptr); - assert(song->parent == this); + assert(&song->parent == this); songs.push_back(*song.release()); } @@ -177,7 +177,7 @@ Directory::RemoveSong(Song *song) noexcept { assert(holding_db_lock()); assert(song != nullptr); - assert(song->parent == this); + assert(&song->parent == this); songs.erase(songs.iterator_to(*song)); } @@ -189,7 +189,7 @@ Directory::FindSong(const char *name_utf8) const noexcept assert(name_utf8 != nullptr); for (auto &song : songs) { - assert(song.parent == this); + assert(&song.parent == this); if (song.uri == name_utf8) return &song; diff --git a/src/db/plugins/simple/Song.cxx b/src/db/plugins/simple/Song.cxx index 586ea3ec8..fa3c48c00 100644 --- a/src/db/plugins/simple/Song.cxx +++ b/src/db/plugins/simple/Song.cxx @@ -26,7 +26,7 @@ inline Song::Song(StringView _uri, Directory &_parent) noexcept - :parent(&_parent), uri(_uri.data, _uri.size) + :parent(_parent), uri(_uri.data, _uri.size) { } @@ -56,10 +56,10 @@ Song::NewFile(const char *path, Directory &parent) noexcept std::string Song::GetURI() const noexcept { - if (parent->IsRoot()) + if (parent.IsRoot()) return uri; else { - const char *path = parent->GetPath(); + const char *path = parent.GetPath(); std::string result; result.reserve(strlen(path) + 1 + uri.length()); @@ -74,8 +74,8 @@ LightSong Song::Export() const noexcept { LightSong dest(uri.c_str(), tag); - if (!parent->IsRoot()) - dest.directory = parent->GetPath(); + if (!parent.IsRoot()) + dest.directory = parent.GetPath(); dest.mtime = mtime; dest.start_time = start_time; dest.end_time = end_time; diff --git a/src/db/plugins/simple/Song.hxx b/src/db/plugins/simple/Song.hxx index 7637b764e..75c67583b 100644 --- a/src/db/plugins/simple/Song.hxx +++ b/src/db/plugins/simple/Song.hxx @@ -60,10 +60,9 @@ struct Song { Tag tag; /** - * The #Directory that contains this song. Must be - * non-nullptr. + * The #Directory that contains this song. */ - Directory *const parent; + Directory &parent; /** * The time stamp of the last file modification. A negative diff --git a/src/db/update/Editor.cxx b/src/db/update/Editor.cxx index c2ee27847..a97c9cf36 100644 --- a/src/db/update/Editor.cxx +++ b/src/db/update/Editor.cxx @@ -29,7 +29,7 @@ void DatabaseEditor::DeleteSong(Directory &dir, Song *del) { - assert(del->parent == &dir); + assert(&del->parent == &dir); /* first, prevent traversers in main task from getting this */ dir.RemoveSong(del); @@ -65,7 +65,7 @@ DatabaseEditor::ClearDirectory(Directory &directory) }); directory.ForEachSongSafe([this, &directory](Song &song){ - assert(song.parent == &directory); + assert(&song.parent == &directory); DeleteSong(directory, &song); }); } diff --git a/src/db/update/Walk.cxx b/src/db/update/Walk.cxx index 245c045d8..bb8a86bb4 100644 --- a/src/db/update/Walk.cxx +++ b/src/db/update/Walk.cxx @@ -79,7 +79,7 @@ UpdateWalk::RemoveExcludedFromDirectory(Directory &directory, }); directory.ForEachSongSafe([&](Song &song){ - assert(song.parent == &directory); + assert(&song.parent == &directory); const auto name_fs = AllocatedPath::FromUTF8(song.uri.c_str()); if (name_fs.IsNull() || exclude_list.Check(name_fs)) {