all: fixing clang warnings
authorMira Grudzinska <m.grudzinska@samsung.com>
Sun, 3 Oct 2021 12:25:14 +0000 (14:25 +0200)
committerJunsuChoi <jsuya.choi@samsung.com>
Wed, 6 Oct 2021 03:03:42 +0000 (12:03 +0900)
fopen->fopen_s, strdup -> _strdup, strncpy -> strncpy_s
__declspec(dllexport) -> __attribute__ ((visibility ("default")))

inc/thorvg.h
src/lib/sw_engine/tvgSwMath.cpp
src/lib/tvgCommon.h
src/savers/tvg/tvgTvgSaver.cpp

index 18b87ef..8905ba4 100644 (file)
@@ -18,7 +18,7 @@
 #include <string>
 
 #ifdef TVG_BUILD
-    #ifdef _MSC_VER
+    #if defined(_MSC_VER) && !defined(__clang__)
         #define TVG_EXPORT __declspec(dllexport)
         #define TVG_DEPRECATED __declspec(deprecated)
     #else
index e39eeb0..55c563f 100644 (file)
@@ -28,7 +28,7 @@
 /************************************************************************/
 
 //clz: count leading zero’s
-#ifdef _MSC_VER
+#if defined(_MSC_VER) && !defined(__clang__)
     #include <intrin.h>
     static uint32_t __inline _clz(uint32_t value)
     {
index 5994080..874cbb1 100644 (file)
@@ -53,6 +53,11 @@ using namespace tvg;
 
 #define TVG_LOG_TAG "thorvg"
 
+#ifdef __clang__
+    #define strncpy strncpy_s
+    #define strdup _strdup
+#endif
+
 //TVG class identifier values
 #define TVG_CLASS_ID_UNDEFINED 0
 #define TVG_CLASS_ID_SHAPE     1
index 4c97966..74cbdb2 100644 (file)
     #include <alloca.h>
 #endif
 
+static FILE* _fopen(const char* filename, const char* mode)
+{
+#ifdef __clang__
+    FILE *fp;
+    auto err = fopen_s(&fp, filename, mode);
+    if (err != 0) return nullptr;
+    return fp;
+#else
+    auto fp = fopen(filename, mode);
+    if (!fp) return nullptr;
+    return fp;
+#endif
+}
+
 #define SIZE(A) sizeof(A)
 
 /************************************************************************/
@@ -181,7 +195,7 @@ bool TvgSaver::saveEncoding(const std::string& path)
     memcpy(uncompressed, &compressedSizeBits, TVG_HEADER_COMPRESSED_SIZE_BITS);
 
     //Good optimization, flush to file.
-    auto fp = fopen(path.c_str(), "w+");
+    auto fp = _fopen(path.c_str(), "w+");
     if (!fp) goto fail;
 
     //write header
@@ -204,7 +218,7 @@ fail:
 
 bool TvgSaver::flushTo(const std::string& path)
 {
-    auto fp = fopen(path.c_str(), "w+");
+    auto fp = _fopen(path.c_str(), "w+");
     if (!fp) return false;
 
     if (fwrite(buffer.data, SIZE(uint8_t), buffer.count, fp) == 0) {