[Tizen] Do not append \0 if we already add \0 93/315693/1
authorEunki, Hong <eunkiki.hong@samsung.com>
Wed, 4 Dec 2024 05:01:46 +0000 (14:01 +0900)
committerEunki, Hong <eunkiki.hong@samsung.com>
Wed, 4 Dec 2024 05:22:40 +0000 (14:22 +0900)
Tizen emulator driver don't support string with end by \0\0.
Let we avoid this case.

Change-Id: Ie5285c3917ba6ef71dcb108f7c2d29f1b18e4d62
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
dali/internal/graphics/gles-impl/gles-graphics-shader.cpp
dali/internal/graphics/vulkan-impl/vulkan-shader-impl.cpp

index 3a2d06576cde6e05b70cda691abc949cc1090190..a78ee0923d93ccbe7578e1e3190b49ba57b83a50 100644 (file)
@@ -148,12 +148,20 @@ struct ShaderImpl::Impl
       return;
     }
 
-    sourcePreprocessed.resize(size + 1 /* Include null-terminated char */);
-    sourcePreprocessed[size] = '\0';
+    const uint8_t* dataPtr = reinterpret_cast<const uint8_t*>(data);
 
-    std::copy(reinterpret_cast<const uint8_t*>(data),
-              reinterpret_cast<const uint8_t*>(data) + size,
-              sourcePreprocessed.data());
+    if(*(dataPtr + size - 1) != '\0')
+    {
+      sourcePreprocessed.resize(size + 1 /* Include null-terminated char */);
+      sourcePreprocessed[size] = '\0';
+    }
+    else
+    {
+      // null-terminated char already included.
+      sourcePreprocessed.resize(size);
+    }
+
+    std::copy(dataPtr, dataPtr + size, sourcePreprocessed.data());
   }
 
   EglGraphicsController& controller;
index f1942b3a25697a4e230eab23202711d4a24c559c..b62dae2febca8ea41778040d9f92764554f43e5b 100644 (file)
@@ -125,12 +125,20 @@ struct ShaderImpl::Impl
       return;
     }
 
-    sourcePreprocessed.resize(size + 1 /* Include null-terminated char */);
-    sourcePreprocessed[size] = '\0';
+    const uint8_t* dataPtr = reinterpret_cast<const uint8_t*>(data);
 
-    std::copy(reinterpret_cast<const uint8_t*>(data),
-              reinterpret_cast<const uint8_t*>(data) + size,
-              sourcePreprocessed.data());
+    if(*(dataPtr + size - 1) != '\0')
+    {
+      sourcePreprocessed.resize(size + 1 /* Include null-terminated char */);
+      sourcePreprocessed[size] = '\0';
+    }
+    else
+    {
+      // null-terminated char already included.
+      sourcePreprocessed.resize(size);
+    }
+
+    std::copy(dataPtr, dataPtr + size, sourcePreprocessed.data());
   }
 
   VulkanGraphicsController&       controller;