queue2: fix deadlock in error path
authorTim-Philipp Müller <tim.muller@collabora.co.uk>
Fri, 12 Aug 2011 18:27:21 +0000 (19:27 +0100)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Fri, 12 Aug 2011 18:44:35 +0000 (19:44 +0100)
Don't lock the same lock twice. Spotted by Josep Torre Valles.

plugins/elements/gstqueue2.c

index f1dce4b0c7394bb0fe88a4e5afdf54d4f1311350..349620f6f1c89a40f25117d95b1f201b7bced33f 100644 (file)
@@ -2835,17 +2835,15 @@ gst_queue2_src_activate_pull (GstPad * pad, gboolean active)
       queue->is_eos = FALSE;
       queue->unexpected = FALSE;
       queue->upstream_size = 0;
-      GST_QUEUE2_MUTEX_UNLOCK (queue);
     } else {
-      GST_QUEUE2_MUTEX_LOCK (queue);
       GST_DEBUG_OBJECT (queue, "no temp file, cannot activate pull mode");
       /* this is not allowed, we cannot operate in pull mode without a temp
        * file. */
       queue->srcresult = GST_FLOW_WRONG_STATE;
       queue->sinkresult = GST_FLOW_WRONG_STATE;
       result = FALSE;
-      GST_QUEUE2_MUTEX_UNLOCK (queue);
     }
+    GST_QUEUE2_MUTEX_UNLOCK (queue);
   } else {
     GST_QUEUE2_MUTEX_LOCK (queue);
     GST_DEBUG_OBJECT (queue, "deactivating pull mode");