From 2c19bcfa1c07bf162d7594b5758bb3b4d7a221ee Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Thu, 7 Jul 2016 23:34:15 +0200 Subject: [PATCH] MediaPlayer: Sanitize supplier/mediaFile management * Fix a leak. --- src/apps/mediaplayer/playlist/PlaylistItem.cpp | 1 + src/apps/mediaplayer/playlist/UrlPlaylistItem.cpp | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/apps/mediaplayer/playlist/PlaylistItem.cpp b/src/apps/mediaplayer/playlist/PlaylistItem.cpp index e6c1003122..1ed5fdc040 100644 --- a/src/apps/mediaplayer/playlist/PlaylistItem.cpp +++ b/src/apps/mediaplayer/playlist/PlaylistItem.cpp @@ -199,6 +199,7 @@ bigtime_t PlaylistItem::_CalculateDuration() delete vi; delete au; + ReleaseTrackSupplier(); return duration; } diff --git a/src/apps/mediaplayer/playlist/UrlPlaylistItem.cpp b/src/apps/mediaplayer/playlist/UrlPlaylistItem.cpp index cc28d81035..f14622e1bd 100644 --- a/src/apps/mediaplayer/playlist/UrlPlaylistItem.cpp +++ b/src/apps/mediaplayer/playlist/UrlPlaylistItem.cpp @@ -139,12 +139,11 @@ UrlPlaylistItem::_CreateTrackSupplier() const return NULL; BMediaFile* mediaFile = new(std::nothrow) BMediaFile(fUrl); - if (mediaFile == NULL) { + if (mediaFile == NULL || supplier->AddMediaFile(mediaFile) != B_OK) { + delete mediaFile; delete supplier; return NULL; } - if (supplier->AddMediaFile(mediaFile) != B_OK) - delete mediaFile; return supplier; }