[Svace] fix svace issue accepted/tizen/unified/20230808.074017
authorJaeyun Jung <jy1210.jung@samsung.com>
Fri, 4 Aug 2023 05:57:02 +0000 (14:57 +0900)
committerjaeyun-jung <39614140+jaeyun-jung@users.noreply.github.com>
Fri, 4 Aug 2023 06:43:20 +0000 (15:43 +0900)
Code clean, fix svace issues.
1. prevent duplicated free case.
2. handle returned val when mapping incoming buffer.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
gst/datarepo/gstdatareposink.c
tests/nnstreamer_datarepo/unittest_datareposrc.cc

index f1c4ba1..3121c96 100644 (file)
@@ -268,13 +268,18 @@ gst_data_repo_sink_write_others (GstDataRepoSink * sink, GstBuffer * buffer)
 {
   gsize write_size = 0;
   GstMapInfo info;
+  GstFlowReturn ret = GST_FLOW_OK;
 
   g_return_val_if_fail (sink != NULL, GST_FLOW_ERROR);
   g_return_val_if_fail (buffer != NULL, GST_FLOW_ERROR);
   g_return_val_if_fail (sink->fd != 0, GST_FLOW_ERROR);
 
+  if (!gst_buffer_map (buffer, &info, GST_MAP_READ)) {
+    GST_ERROR_OBJECT (sink, "Failed to map the incoming buffer.");
+    return GST_FLOW_ERROR;
+  }
+
   GST_OBJECT_LOCK (sink);
-  gst_buffer_map (buffer, &info, GST_MAP_READ);
   sink->sample_size = info.size;
 
   GST_LOG_OBJECT (sink,
@@ -283,18 +288,18 @@ gst_data_repo_sink_write_others (GstDataRepoSink * sink, GstBuffer * buffer)
 
   write_size = write (sink->fd, info.data, info.size);
 
-  gst_buffer_unmap (buffer, &info);
-  GST_OBJECT_UNLOCK (sink);
-
   if (write_size != info.size) {
     GST_ERROR_OBJECT (sink, "Could not write data to file");
-    return GST_FLOW_ERROR;
+    ret = GST_FLOW_ERROR;
+  } else {
+    sink->fd_offset += write_size;
+    sink->total_samples++;
   }
 
-  sink->fd_offset += write_size;
-  sink->total_samples++;
+  GST_OBJECT_UNLOCK (sink);
+  gst_buffer_unmap (buffer, &info);
 
-  return GST_FLOW_OK;
+  return ret;
 }
 
 /**
@@ -411,40 +416,40 @@ static GstFlowReturn
 gst_data_repo_sink_write_multi_images (GstDataRepoSink * sink,
     GstBuffer * buffer)
 {
-  gchar *filename;
-  gboolean ret;
+  g_autofree gchar *filename = NULL;
+  GstFlowReturn ret = GST_FLOW_OK;
   GError *error = NULL;
   GstMapInfo info;
 
   g_return_val_if_fail (sink != NULL, GST_FLOW_ERROR);
   g_return_val_if_fail (buffer != NULL, GST_FLOW_ERROR);
 
+  if (!gst_buffer_map (buffer, &info, GST_MAP_READ)) {
+    GST_ERROR_OBJECT (sink, "Failed to map the incoming buffer.");
+    return GST_FLOW_ERROR;
+  }
+
   filename = gst_data_repo_sink_get_image_filename (sink);
 
   GST_OBJECT_LOCK (sink);
-  gst_buffer_map (buffer, &info, GST_MAP_READ);
-
   sink->sample_size = info.size;
 
   GST_DEBUG_OBJECT (sink, "Writing to file \"%s\", size(%zd)", filename,
       info.size);
-  ret = g_file_set_contents (filename, (char *) info.data, info.size, &error);
-
-  gst_buffer_unmap (buffer, &info);
-  GST_OBJECT_UNLOCK (sink);
-
-  g_free (filename);
 
-  if (!ret) {
+  if (!g_file_set_contents (filename, (char *) info.data, info.size, &error)) {
     GST_ERROR_OBJECT (sink, "Could not write data to file: %s",
         error ? error->message : "unknown error");
     g_clear_error (&error);
-    return GST_FLOW_ERROR;
+    ret = GST_FLOW_ERROR;
+  } else {
+    sink->total_samples++;
   }
 
-  sink->total_samples++;
+  GST_OBJECT_UNLOCK (sink);
+  gst_buffer_unmap (buffer, &info);
 
-  return GST_FLOW_OK;
+  return ret;
 }
 
 /**
index ea866df..467aa80 100644 (file)
@@ -733,7 +733,7 @@ TEST (datareposrc, fps30ReadFlexibleTensors)
  */
 TEST (datareposrc, readSparseTensors)
 {
-  gchar *data = NULL;
+  gchar *sparse_data = NULL, *sample_data = NULL;
   gsize size, org_size = 31760;
   gint buffer_count = 0;
   GstElement *tensor_sink;
@@ -773,18 +773,18 @@ TEST (datareposrc, readSparseTensors)
   gst_object_unref (pipeline);
   g_main_loop_unref (loop);
 
-  if (!g_file_get_contents ("sparse.data", &data, &size, NULL)) {
+  if (!g_file_get_contents ("sparse.data", &sparse_data, &size, NULL)) {
     goto error;
   }
   EXPECT_LT (size, org_size);
-  g_free (data);
 
-  if (!g_file_get_contents ("sample.data", &data, &size, NULL)) {
+  if (!g_file_get_contents ("sample.data", &sample_data, &size, NULL)) {
     goto error;
   }
   EXPECT_EQ (size, org_size);
 error:
-  g_free (data);
+  g_free (sparse_data);
+  g_free (sample_data);
   g_remove ("sparse.json");
   g_remove ("sparse.data");
   g_remove ("sample.data");