Browse Source

Fix USE_ICONV=local on macOS
07564a01625ba418360cb1b39a9df66f31a2ca6a

somov 1 year ago
parent
commit
65d0d84a58
2 changed files with 6 additions and 2 deletions
  1. 4 0
      contrib/libs/libiconv/ya.make
  2. 2 2
      library/cpp/charset/iconv.cpp

+ 4 - 0
contrib/libs/libiconv/ya.make

@@ -36,6 +36,10 @@ ELSEIF (USE_ICONV == "dynamic")
 ELSEIF (USE_ICONV == "local")
     GLOBAL_CFLAGS(${USE_LOCAL_ICONV_CFLAGS})
 
+    IF (OS_DARWIN)
+        LDFLAGS(-liconv)
+    ENDIF()
+
     # Opensource code is compatible with libc provided iconv API on major linux distributions and macos.
 ELSE()
     PEERDIR(

+ 2 - 2
library/cpp/charset/iconv.cpp

@@ -20,7 +20,7 @@ TDescriptor::TDescriptor(const char* from, const char* to)
 
 TDescriptor::~TDescriptor() {
     if (!Invalid()) {
-        iconv_close(Descriptor_);
+        iconv_close(static_cast<iconv_t>(Descriptor_));
     }
 }
 
@@ -33,7 +33,7 @@ size_t NICONVPrivate::RecodeImpl(const TDescriptor& descriptor, const char* in,
     char* outPtr = out;
     size_t inSizeMod = inSize;
     size_t outSizeMod = outSize;
-    size_t res = iconv(descriptor.Get(), &inPtr, &inSizeMod, &outPtr, &outSizeMod);
+    size_t res = iconv(static_cast<iconv_t>(descriptor.Get()), &inPtr, &inSizeMod, &outPtr, &outSizeMod);
 
     read = inSize - inSizeMod;
     written = outSize - outSizeMod;