SongSave: wrap DetachedSong* in std::unique_ptr
This commit is contained in:
parent
28fdf1e9ed
commit
75582d47b9
@ -76,10 +76,10 @@ song_save(BufferedOutputStream &os, const DetachedSong &song)
|
||||
os.Format(SONG_END "\n");
|
||||
}
|
||||
|
||||
DetachedSong *
|
||||
std::unique_ptr<DetachedSong>
|
||||
song_load(TextFile &file, const char *uri)
|
||||
{
|
||||
DetachedSong *song = new DetachedSong(uri);
|
||||
auto song = std::make_unique<DetachedSong>(uri);
|
||||
|
||||
TagBuilder tag;
|
||||
|
||||
@ -88,8 +88,6 @@ song_load(TextFile &file, const char *uri)
|
||||
strcmp(line, SONG_END) != 0) {
|
||||
char *colon = strchr(line, ':');
|
||||
if (colon == nullptr || colon == line) {
|
||||
delete song;
|
||||
|
||||
throw FormatRuntimeError("unknown line in db: %s", line);
|
||||
}
|
||||
|
||||
@ -116,8 +114,6 @@ song_load(TextFile &file, const char *uri)
|
||||
song->SetStartTime(SongTime::FromMS(start_ms));
|
||||
song->SetEndTime(SongTime::FromMS(end_ms));
|
||||
} else {
|
||||
delete song;
|
||||
|
||||
throw FormatRuntimeError("unknown line in db: %s", line);
|
||||
}
|
||||
}
|
||||
|
@ -20,6 +20,8 @@
|
||||
#ifndef MPD_SONG_SAVE_HXX
|
||||
#define MPD_SONG_SAVE_HXX
|
||||
|
||||
#include <memory>
|
||||
|
||||
#define SONG_BEGIN "song_begin: "
|
||||
|
||||
struct Song;
|
||||
@ -39,7 +41,7 @@ song_save(BufferedOutputStream &os, const DetachedSong &song);
|
||||
*
|
||||
* Throws #std::runtime_error on error.
|
||||
*/
|
||||
DetachedSong *
|
||||
std::unique_ptr<DetachedSong>
|
||||
song_load(TextFile &file, const char *uri);
|
||||
|
||||
#endif
|
||||
|
@ -160,11 +160,10 @@ directory_load(TextFile &file, Directory &directory)
|
||||
if (directory.FindSong(name) != nullptr)
|
||||
throw FormatRuntimeError("Duplicate song '%s'", name);
|
||||
|
||||
DetachedSong *song = song_load(file, name);
|
||||
auto song = song_load(file, name);
|
||||
|
||||
directory.AddSong(Song::NewFrom(std::move(*song),
|
||||
directory));
|
||||
delete song;
|
||||
} else if ((p = StringAfterPrefix(line, PLAYLIST_META_BEGIN))) {
|
||||
const char *name = p;
|
||||
playlist_metadata_load(file, directory.playlists, name);
|
||||
|
@ -89,7 +89,7 @@ queue_load_song(TextFile &file, const SongLoader &loader,
|
||||
return;
|
||||
}
|
||||
|
||||
DetachedSong *song;
|
||||
std::unique_ptr<DetachedSong> song;
|
||||
|
||||
if ((p = StringAfterPrefix(line, SONG_BEGIN))) {
|
||||
const char *uri = p;
|
||||
@ -111,14 +111,11 @@ queue_load_song(TextFile &file, const SongLoader &loader,
|
||||
|
||||
const char *uri = endptr + 1;
|
||||
|
||||
song = new DetachedSong(uri);
|
||||
song = std::make_unique<DetachedSong>(uri);
|
||||
}
|
||||
|
||||
if (!playlist_check_translate_song(*song, nullptr, loader)) {
|
||||
delete song;
|
||||
if (playlist_check_translate_song(*song, nullptr, loader))
|
||||
return;
|
||||
}
|
||||
|
||||
queue.Append(std::move(*song), priority);
|
||||
delete song;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user