aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsomov <somov@yandex-team.com>2024-03-15 09:59:14 +0300
committersomov <somov@yandex-team.com>2024-03-15 10:09:57 +0300
commit65d0d84a586133fec1a91bf9816e40be597cf9a0 (patch)
tree426353c6c219c9cb3fa888580593a9af92052202
parent972deb0a3ffc507a9ff49edafa83fde2ab49df83 (diff)
downloadydb-65d0d84a586133fec1a91bf9816e40be597cf9a0.tar.gz
Fix USE_ICONV=local on macOS
07564a01625ba418360cb1b39a9df66f31a2ca6a
-rw-r--r--contrib/libs/libiconv/ya.make4
-rw-r--r--library/cpp/charset/iconv.cpp4
2 files changed, 6 insertions, 2 deletions
diff --git a/contrib/libs/libiconv/ya.make b/contrib/libs/libiconv/ya.make
index 629f048083..6c6e4898be 100644
--- a/contrib/libs/libiconv/ya.make
+++ b/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(
diff --git a/library/cpp/charset/iconv.cpp b/library/cpp/charset/iconv.cpp
index 0b6dbace9e..66995bf770 100644
--- a/library/cpp/charset/iconv.cpp
+++ b/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;