task: add function guard for _set_lock() and fix guard for _join()
authorPrashant Gotarne <ps.gotarne@samsung.com>
Wed, 18 Mar 2015 10:35:34 +0000 (16:05 +0530)
committerTim-Philipp Müller <tim@centricular.com>
Mon, 13 Jul 2015 13:16:52 +0000 (14:16 +0100)
Should only access the object structure after checking
it's valid in gst_task_join().

https://bugzilla.gnome.org/show_bug.cgi?id=746385
https://bugzilla.gnome.org/show_bug.cgi?id=746431

gst/gsttask.c

index 6241bb8..62453d1 100644 (file)
@@ -442,6 +442,8 @@ gst_task_new (GstTaskFunction func, gpointer user_data, GDestroyNotify notify)
 void
 gst_task_set_lock (GstTask * task, GRecMutex * mutex)
 {
+  g_return_if_fail (GST_IS_TASK (task));
+
   GST_OBJECT_LOCK (task);
   if (G_UNLIKELY (task->running))
     goto is_running;
@@ -797,10 +799,10 @@ gst_task_join (GstTask * task)
   gpointer id;
   GstTaskPool *pool = NULL;
 
-  priv = task->priv;
-
   g_return_val_if_fail (GST_IS_TASK (task), FALSE);
 
+  priv = task->priv;
+
   tself = g_thread_self ();
 
   GST_DEBUG_OBJECT (task, "Joining task %p, thread %p", task, tself);