libvlcpp | branch: master | Hugo Beauzée-Luyssen <[email protected]> | Wed May 20 11:02:41 2015 +0200| [48e272a7ccaff7f40115e07684bbedb17d95f013] | committer: Hugo Beauzée-Luyssen
MediaPlayer: outputDeviceEnum: Ensure we always release the device list vector::emplace_back might throw and prevent libvlc_audio_output_device_list_release from being called > http://git.videolan.org/gitweb.cgi/libvlcpp.git/?a=commit;h=48e272a7ccaff7f40115e07684bbedb17d95f013 --- vlcpp/MediaPlayer.hpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/vlcpp/MediaPlayer.hpp b/vlcpp/MediaPlayer.hpp index ff7f119..2db4ab7 100644 --- a/vlcpp/MediaPlayer.hpp +++ b/vlcpp/MediaPlayer.hpp @@ -820,13 +820,14 @@ public: */ std::vector<AudioOutputDeviceDescription> outputDeviceEnum() { - libvlc_audio_output_device_t* devices = libvlc_audio_output_device_enum(*this); + auto devices = libvlc_audio_output_device_enum(*this); + if ( devices == nullptr ) + return {}; std::vector<AudioOutputDeviceDescription> res; - if ( devices == NULL ) - return res; + std::unique_ptr<libvlc_audio_output_device_t, decltype(&libvlc_audio_output_device_list_release)> + devicesPtr( devices, libvlc_audio_output_device_list_release); for ( auto* p = devices; p != NULL; p = p->p_next ) res.emplace_back( p ); - libvlc_audio_output_device_list_release( devices ); return res; } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
