Nikolay Sivov : mfplay: Fix leaks on error paths (Coverity).

Alexandre Julliard julliard at winehq.org
Mon Nov 8 15:45:05 CST 2021


Module: wine
Branch: master
Commit: b676f14865e2765729e238ceb8e54e96e63f1da0
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=b676f14865e2765729e238ceb8e54e96e63f1da0

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon Nov  8 11:43:07 2021 +0300

mfplay: Fix leaks on error paths (Coverity).

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mfplay/player.c | 20 +++++++++-----------
 1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/dlls/mfplay/player.c b/dlls/mfplay/player.c
index 12ea653b97d..5abee9d7de8 100644
--- a/dlls/mfplay/player.c
+++ b/dlls/mfplay/player.c
@@ -1024,6 +1024,15 @@ static HRESULT media_player_create_item_from_url(struct media_player *player,
     IUnknown *object;
     HRESULT hr;
 
+    if (sync && !ret)
+        return E_POINTER;
+
+    if (!sync && !player->callback)
+    {
+        WARN("Asynchronous item creation is not supported without user callback.\n");
+        return MF_E_INVALIDREQUEST;
+    }
+
     if (FAILED(hr = create_media_item(&player->IMFPMediaPlayer_iface, user_data, &item)))
         return hr;
 
@@ -1035,9 +1044,6 @@ static HRESULT media_player_create_item_from_url(struct media_player *player,
 
     if (sync)
     {
-        if (!ret)
-            return E_POINTER;
-
         *ret = NULL;
 
         if (SUCCEEDED(hr = IMFSourceResolver_CreateObjectFromURL(player->resolver, url, MF_RESOLUTION_MEDIASOURCE,
@@ -1054,17 +1060,9 @@ static HRESULT media_player_create_item_from_url(struct media_player *player,
         }
 
         IMFPMediaItem_Release(&item->IMFPMediaItem_iface);
-
-        return hr;
     }
     else
     {
-        if (!player->callback)
-        {
-            WARN("Asynchronous item creation is not supported without user callback.\n");
-            return MF_E_INVALIDREQUEST;
-        }
-
         if (ret) *ret = NULL;
 
         hr = IMFSourceResolver_BeginCreateObjectFromURL(player->resolver, url, MF_RESOLUTION_MEDIASOURCE,




More information about the wine-cvs mailing list