[vlc-commits] MediaPlayer: getTracksDescription: Ensure the track list always gets released

Hugo Beauzée-Luyssen git at videolan.org
Mon May 25 10:04:45 CEST 2015


libvlcpp | branch: master | Hugo Beauzée-Luyssen <hugo at beauzee.fr> | Wed May 20 13:51:22 2015 +0200| [1ca7de02c888eac1b5d19f46335fc8dcbb040fe0] | committer: Hugo Beauzée-Luyssen

MediaPlayer: getTracksDescription: Ensure the track list always gets released

An exception might be thrown by emplace_back

> http://git.videolan.org/gitweb.cgi/libvlcpp.git/?a=commit;h=1ca7de02c888eac1b5d19f46335fc8dcbb040fe0
---

 vlcpp/MediaPlayer.hpp |   11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/vlcpp/MediaPlayer.hpp b/vlcpp/MediaPlayer.hpp
index 2db4ab7..1d81d57 100644
--- a/vlcpp/MediaPlayer.hpp
+++ b/vlcpp/MediaPlayer.hpp
@@ -1634,16 +1634,17 @@ public:
 private:
     std::vector<TrackDescription> getTracksDescription( libvlc_track_description_t* tracks ) const
     {
+        if ( tracks == nullptr )
+            return {};
         std::vector<TrackDescription> result;
-        if ( tracks == NULL )
-            return result;
-        libvlc_track_description_t* p = tracks;
-        while ( p != NULL )
+        auto p = tracks;
+        std::unique_ptr<libvlc_track_description_t, decltype(&libvlc_track_description_list_release)>
+                devicePtr( tracks, libvlc_track_description_list_release );
+        while ( p != nullptr )
         {
             result.emplace_back( p );
             p = p->p_next;
         }
-        libvlc_track_description_list_release(tracks);
         return result;
     }
 



More information about the vlc-commits mailing list