miniobject: refuse write when object is shared
authorWim Taymans <wim.taymans@collabora.co.uk>
Thu, 19 Jul 2012 11:20:27 +0000 (13:20 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Thu, 19 Jul 2012 11:20:27 +0000 (13:20 +0200)
In all cases, refuse to write an object when it is shared by more than one
object (also when the object was locked before).

See https://bugzilla.gnome.org/show_bug.cgi?id=679145

gst/gstminiobject.c

index be319b1..a4c42b1 100644 (file)
@@ -190,10 +190,11 @@ gst_mini_object_lock (GstMiniObject * object, GstLockFlags flags)
     }
 
     if (access_mode) {
+      /* shared counter > 1 and write access is not allowed */
+      if (state > SHARE_ONE && access_mode & GST_LOCK_FLAG_WRITE)
+        goto lock_failed;
+
       if ((state & LOCK_FLAG_MASK) == 0) {
-        /* shared counter > 1 and write access */
-        if (state > SHARE_ONE && access_mode & GST_LOCK_FLAG_WRITE)
-          goto lock_failed;
         /* nothing mapped, set access_mode */
         newstate |= access_mode;
       } else {