[vlc-commits] gui/qt: prevent potential deadlock in PLModel::dropAppendCopy

Filip Roséen git at videolan.org
Wed Jul 20 16:15:54 CEST 2016


vlc | branch: master | Filip Roséen <filip at videolabs.io> | Wed Jul 20 04:36:53 2016 +0200| [97dc31e3ba88f4c1bf953b2872a041f3dc3cf355] | committer: Jean-Baptiste Kempf

gui/qt: prevent potential deadlock in PLModel::dropAppendCopy

Given that the function might return prematurely it could, prior to this
patch, result in a deadlock (since the playlist-lock will not be
unlocked correctly).

By introducing vlc_playlist_locker the implementation is safe.

Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=97dc31e3ba88f4c1bf953b2872a041f3dc3cf355
---

 modules/gui/qt/components/playlist/playlist_model.cpp |    4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/modules/gui/qt/components/playlist/playlist_model.cpp b/modules/gui/qt/components/playlist/playlist_model.cpp
index 2df4722..e9f0c52 100644
--- a/modules/gui/qt/components/playlist/playlist_model.cpp
+++ b/modules/gui/qt/components/playlist/playlist_model.cpp
@@ -172,7 +172,7 @@ bool PLModel::dropMimeData( const QMimeData *data, Qt::DropAction action,
 
 void PLModel::dropAppendCopy( const PlMimeData *plMimeData, PLItem *target, int pos )
 {
-    PL_LOCK;
+    vlc_playlist_locker pl_lock ( THEPL );
 
     playlist_item_t *p_parent =
         playlist_ItemGetByInput( p_playlist, target->inputItem() );
@@ -188,8 +188,6 @@ void PLModel::dropAppendCopy( const PlMimeData *plMimeData, PLItem *target, int
         if( !p_item ) continue;
         pos = playlist_NodeAddCopy( p_playlist, p_item, p_parent, pos );
     }
-
-    PL_UNLOCK;
 }
 
 void PLModel::dropMove( const PlMimeData * plMimeData, PLItem *target, int row )



More information about the vlc-commits mailing list