Fix svace issue (strerror -> strerror_r) 02/290302/2
authorEunki, Hong <eunkiki.hong@samsung.com>
Thu, 23 Mar 2023 03:16:42 +0000 (12:16 +0900)
committerEunki, Hong <eunkiki.hong@samsung.com>
Thu, 23 Mar 2023 04:37:05 +0000 (13:37 +0900)
SVACE say to us that Don't use strerror.

Change-Id: Ib0a884b23e4278e86189a7ca727b150b24d26a06
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
dali-scene3d/public-api/loader/navigation-mesh-factory.cpp

index 4ae02e6..7e09332 100644 (file)
@@ -31,41 +31,48 @@ std::unique_ptr<Algorithm::NavigationMesh> NavigationMeshFactory::CreateFromFile
   std::vector<uint8_t> buffer;
 
   Dali::FileStream fileStream(filename, Dali::FileStream::READ | Dali::FileStream::BINARY);
-  auto fin = fileStream.GetFile();
+  auto             fin = fileStream.GetFile();
 
-  if(!fin)
+  if(DALI_UNLIKELY(!fin))
   {
-    DALI_LOG_ERROR("NavigationMesh: Can't open %s for reading: %s", filename.c_str(), strerror(errno));
+    const int bufferLength = 128;
+    char      buffer[bufferLength];
+
+    // Return type of stderror_r is different between system type. We should not use return value.
+    [[maybe_unused]] auto ret = strerror_r(errno, buffer, bufferLength - 1);
+
+    DALI_LOG_ERROR("NavigationMesh: Can't open %s for reading: %s", filename.c_str(), buffer);
     return nullptr;
   }
-  else
+
+  if(DALI_UNLIKELY(fseek(fin, 0, SEEK_END)))
   {
-    if(fseek(fin, 0, SEEK_END))
-    {
-      return {};
-    }
+    DALI_LOG_ERROR("NavigationMesh: Error reading file: %s\n", filename.c_str());
+    return nullptr;
+  }
 
-    auto size = ftell(fin);
-    if(size < 0)
-    {
-      return {};
-    }
+  auto size = ftell(fin);
+  if(DALI_UNLIKELY(size < 0))
+  {
+    DALI_LOG_ERROR("NavigationMesh: Error reading file: %s\n", filename.c_str());
+    return nullptr;
+  }
 
-    auto fileSize = size_t(size);
-    if(fseek(fin, 0, SEEK_SET))
-    {
-      return {};
-    }
+  auto fileSize = size_t(size);
+  if(DALI_UNLIKELY(fseek(fin, 0, SEEK_SET)))
+  {
+    DALI_LOG_ERROR("NavigationMesh: Error reading file: %s\n", filename.c_str());
+    return nullptr;
+  }
 
-    buffer.resize(size);
-    auto count = fread(buffer.data(), 1, fileSize, fin);
-    if(count != fileSize)
-    {
-      DALI_LOG_ERROR("NavigationMesh: Error reading file: %s\n", filename.c_str());
-      return nullptr;
-    }
-    return CreateFromBuffer(buffer);
+  buffer.resize(size);
+  auto count = fread(buffer.data(), 1, fileSize, fin);
+  if(DALI_UNLIKELY(count != fileSize))
+  {
+    DALI_LOG_ERROR("NavigationMesh: Error reading file: %s\n", filename.c_str());
+    return nullptr;
   }
+  return CreateFromBuffer(buffer);
 }
 
 std::unique_ptr<Algorithm::NavigationMesh> NavigationMeshFactory::CreateFromBuffer(const std::vector<uint8_t>& buffer)