From d83e7bb63f7b6328ef7e02e5a4e0c55128e612fe Mon Sep 17 00:00:00 2001 From: "jijoong.moon" Date: Thu, 29 Nov 2018 11:05:47 +0900 Subject: [PATCH] [Repo] Fix bug return without releasing lock 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 --- gst/nnstreamer/tensor_repo.c | 10 ++++++++-- gst/tensor_reposrc/tensor_reposrc.c | 3 --- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/gst/nnstreamer/tensor_repo.c b/gst/nnstreamer/tensor_repo.c index a406c75..84bcb0e 100644 --- a/gst/nnstreamer/tensor_repo.c +++ b/gst/nnstreamer/tensor_repo.c @@ -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; diff --git a/gst/tensor_reposrc/tensor_reposrc.c b/gst/tensor_reposrc/tensor_reposrc.c index 389ff82..3ced530 100644 --- a/gst/tensor_reposrc/tensor_reposrc.c +++ b/gst/tensor_reposrc/tensor_reposrc.c @@ -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; -- 2.7.4