From cefc773992bcb87feb2874ea4b7a94ba8117ba44 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 13 Mar 2020 19:58:36 +0100 Subject: [PATCH] playlist/PlaylistSong: pass std::string_view --- src/playlist/PlaylistSong.cxx | 8 ++++---- src/playlist/PlaylistSong.hxx | 4 +++- src/queue/QueueSave.cxx | 2 +- test/test_translate_song.cxx | 12 ++++++------ 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/playlist/PlaylistSong.cxx b/src/playlist/PlaylistSong.cxx index e97614b9a..fdd12bad9 100644 --- a/src/playlist/PlaylistSong.cxx +++ b/src/playlist/PlaylistSong.cxx @@ -65,15 +65,15 @@ try { } bool -playlist_check_translate_song(DetachedSong &song, const char *base_uri, +playlist_check_translate_song(DetachedSong &song, std::string_view base_uri, const SongLoader &loader) noexcept { - if (base_uri != nullptr && strcmp(base_uri, ".") == 0) + if (base_uri.compare(".") == 0) /* PathTraitsUTF8::GetParent() returns "." when there is no directory name in the given path; clear that now, because it would break the database lookup functions */ - base_uri = nullptr; + base_uri = {}; const char *uri = song.GetURI(); @@ -92,7 +92,7 @@ playlist_check_translate_song(DetachedSong &song, const char *base_uri, } #endif - if (base_uri != nullptr && !uri_has_scheme(uri) && + if (base_uri.data() != nullptr && !uri_has_scheme(uri) && !PathTraitsUTF8::IsAbsolute(uri)) song.SetURI(PathTraitsUTF8::Build(base_uri, uri)); diff --git a/src/playlist/PlaylistSong.hxx b/src/playlist/PlaylistSong.hxx index f733da725..8f077922b 100644 --- a/src/playlist/PlaylistSong.hxx +++ b/src/playlist/PlaylistSong.hxx @@ -20,6 +20,8 @@ #ifndef MPD_PLAYLIST_SONG_HXX #define MPD_PLAYLIST_SONG_HXX +#include + class SongLoader; class DetachedSong; @@ -30,7 +32,7 @@ class DetachedSong; * @return true on success, false if the song should not be used */ bool -playlist_check_translate_song(DetachedSong &song, const char *base_uri, +playlist_check_translate_song(DetachedSong &song, std::string_view base_uri, const SongLoader &loader) noexcept; #endif diff --git a/src/queue/QueueSave.cxx b/src/queue/QueueSave.cxx index a16f0414e..4e1017d63 100644 --- a/src/queue/QueueSave.cxx +++ b/src/queue/QueueSave.cxx @@ -112,7 +112,7 @@ queue_load_song(TextFile &file, const SongLoader &loader, auto song = LoadQueueSong(file, line); - if (!playlist_check_translate_song(song, nullptr, loader)) + if (!playlist_check_translate_song(song, {}, loader)) return; queue.Append(std::move(song), priority); diff --git a/test/test_translate_song.cxx b/test/test_translate_song.cxx index 7b4b6b777..c1f0feaa5 100644 --- a/test/test_translate_song.cxx +++ b/test/test_translate_song.cxx @@ -200,7 +200,7 @@ TEST_F(TranslateSongTest, Insecure) /* illegal because secure=false */ DetachedSong song1 (uri1); const SongLoader loader(*reinterpret_cast(1)); - EXPECT_FALSE(playlist_check_translate_song(song1, nullptr, + EXPECT_FALSE(playlist_check_translate_song(song1, {}, loader)); } @@ -221,18 +221,18 @@ TEST_F(TranslateSongTest, InDatabase) storage); DetachedSong song1("doesntexist"); - EXPECT_FALSE(playlist_check_translate_song(song1, nullptr, + EXPECT_FALSE(playlist_check_translate_song(song1, {}, loader)); DetachedSong song2(uri2, MakeTag2b()); auto se = ToString(DetachedSong(uri2, MakeTag2c())); - EXPECT_TRUE(playlist_check_translate_song(song2, nullptr, + EXPECT_TRUE(playlist_check_translate_song(song2, {}, loader)); EXPECT_EQ(se, ToString(song2)); DetachedSong song3("/music/foo/bar.ogg", MakeTag2b()); se = ToString(DetachedSong(uri2, MakeTag2c())); - EXPECT_TRUE(playlist_check_translate_song(song3, nullptr, + EXPECT_TRUE(playlist_check_translate_song(song3, {}, loader)); EXPECT_EQ(se, ToString(song3)); } @@ -281,12 +281,12 @@ TEST_F(TranslateSongTest, Backslash) /* on Windows, all backslashes are converted to slashes in relative paths from playlists */ auto se = ToString(DetachedSong(uri2, MakeTag2c())); - EXPECT_TRUE(playlist_check_translate_song(song1, nullptr, + EXPECT_TRUE(playlist_check_translate_song(song1, {}, loader)); EXPECT_EQ(se, ToString(song1)); #else /* backslash only supported on Windows */ - EXPECT_FALSE(playlist_check_translate_song(song1, nullptr, + EXPECT_FALSE(playlist_check_translate_song(song1, {}, loader)); #endif }