[Repo] Fix bug return without releasing lock
authorjijoong.moon <jijoong.moon@samsung.com>
Thu, 29 Nov 2018 02:05:47 +0000 (11:05 +0900)
committerMyungJoo Ham <myungjoo.ham@gmail.com>
Thu, 29 Nov 2018 08:02:10 +0000 (08:02 +0000)
tensor_repo.c::gst_tensor_repo_add_repodata, unlock should be used
before return.

Resolves: #933

**Self evaluation:**
1. Build test:  [X]Passed [ ]Failed [ ]Skipped
2. Run test:  [X]Passed [ ]Failed [ ]Skipped

Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
gst/nnstreamer/tensor_repo.c
gst/tensor_reposrc/tensor_reposrc.c

index a406c75..84bcb0e 100644 (file)
@@ -60,6 +60,7 @@ gst_tensor_repo_add_repodata (guint nth)
   gpointer check = g_hash_table_lookup (_repo.hash, GINT_TO_POINTER (nth));
 
   if (check != NULL) {
+    GST_REPO_UNLOCK ();
     return TRUE;
   }
 
@@ -89,7 +90,11 @@ gst_tensor_repo_set_buffer (guint nth, GstBuffer * buffer)
   GST_TENSOR_REPO_LOCK (nth);
 
   GstTensorRepoData *data = gst_tensor_repo_get_repodata (nth);
-  g_return_val_if_fail (data != NULL, FALSE);
+
+  if (data == NULL) {
+    GST_TENSOR_REPO_UNLOCK (nth);
+    return FALSE;
+  }
 
   data->buffer = buffer;
   if (DBG) {
@@ -141,8 +146,9 @@ gst_tensor_repo_get_buffer (guint nth)
   GstBuffer *buf;
   gboolean eos = FALSE;
 
-  current_data = gst_tensor_repo_get_repodata (nth);
   GST_TENSOR_REPO_LOCK (nth);
+  current_data = gst_tensor_repo_get_repodata (nth);
+
   while (!current_data->buffer) {
     if (gst_tensor_repo_check_eos (nth)) {
       eos = TRUE;
index 389ff82..3ced530 100644 (file)
@@ -266,9 +266,6 @@ gst_tensor_reposrc_create (GstPushSrc * src, GstBuffer ** buffer)
 
   self = GST_TENSOR_REPOSRC (src);
   gst_tensor_repo_wait ();
-  if (gst_tensor_repo_check_eos (self->myid)) {
-    return GST_FLOW_EOS;
-  }
 
   if (!self->ini) {
     int i;