SoundPlayer: Fix stack-use-after-scope when playing file in loop mode

The path returned by GUI:FilePicker is stored on the stack when the
callback is executed. The player only stored a StringView to the path
however it should take ownership of the path instead since the path is
accessed even after the file menu open action has returned.
This commit is contained in:
Simon Woertz 2021-11-07 16:22:12 +01:00 committed by Brian Gianforcaro
parent 1e48cd35a1
commit 1476f02f99
Notes: sideshowbarker 2024-07-18 01:22:07 +09:00
2 changed files with 4 additions and 4 deletions

View file

@ -38,7 +38,7 @@ Player::Player(Audio::ClientConnection& audio_client_connection)
};
}
void Player::play_file_path(StringView path)
void Player::play_file_path(String const& path)
{
if (path.is_null())
return;

View file

@ -32,10 +32,10 @@ public:
explicit Player(Audio::ClientConnection& audio_client_connection);
virtual ~Player() { }
void play_file_path(StringView path);
void play_file_path(String const& path);
Playlist& playlist() { return m_playlist; }
StringView loaded_filename() const { return m_loaded_filename; }
String const& loaded_filename() const { return m_loaded_filename; }
PlayState play_state() const { return m_play_state; }
void set_play_state(PlayState);
@ -84,6 +84,6 @@ private:
Audio::ClientConnection& m_audio_client_connection;
PlaybackManager m_playback_manager;
StringView m_loaded_filename;
String m_loaded_filename;
double m_volume { 0 };
};