libretro-citra: Fix iconv usage on netbsd
authorNia Alarie <nia.alarie@gmail.com>
Tue, 5 Jun 2018 17:09:16 +0000 (18:09 +0100)
committerNia Alarie <nia.alarie@gmail.com>
Tue, 5 Jun 2018 17:09:16 +0000 (18:09 +0100)
libretro-citra/distinfo
libretro-citra/patches/patch-src_common_string__util.cpp [new file with mode: 0644]

index c15b4d0508f325db1c95e85885173785199b9624..afc198a2206c3652076c62992e9addef7054d4bf 100644 (file)
@@ -50,3 +50,4 @@ SHA512 (fd69de1a1b960ec296cc67d32257b0f9e2d89ac6.tar.gz) = 2bfe22a83054871ac5409
 Size (fd69de1a1b960ec296cc67d32257b0f9e2d89ac6.tar.gz) = 110454 bytes
 SHA1 (patch-externals_cryptopp_cryptopp_config.h) = d11cc8324caeb5c13e40715b1bb970307c40f80b
 SHA1 (patch-externals_dynarmic_CMakeLists.txt) = 6e1fe92e7a8793e45e6d4fcd009164be16c39a9c
+SHA1 (patch-src_common_string__util.cpp) = 57f0015b0f78a0c33d79ca9323ab2cb5491ae873
diff --git a/libretro-citra/patches/patch-src_common_string__util.cpp b/libretro-citra/patches/patch-src_common_string__util.cpp
new file mode 100644 (file)
index 0000000..a00eb9b
--- /dev/null
@@ -0,0 +1,45 @@
+$NetBSD$
+
+error: invalid conversion from 'char**' to 'const char**'
+
+--- src/common/string_util.cpp.orig    2018-05-19 11:54:21.000000000 +0000
++++ src/common/string_util.cpp
+@@ -359,14 +359,26 @@ static std::string CodeToUTF8(const char
+     std::string out_buffer;
+     out_buffer.resize(out_buffer_size);
++#ifdef __NetBSD__
++    const char* src_buffer = (const char*)(&input[0]);
++    size_t src_bytes = in_bytes;
++    char* dst_buffer = (char*)(&out_buffer[0]);
++    size_t dst_bytes = out_buffer.size();
++#else
+     auto src_buffer = &input[0];
+     size_t src_bytes = in_bytes;
+     auto dst_buffer = &out_buffer[0];
+     size_t dst_bytes = out_buffer.size();
++#endif
+     while (0 != src_bytes) {
++#ifndef __NetBSD__
+         size_t const iconv_result =
+             iconv(conv_desc, (char**)(&src_buffer), &src_bytes, &dst_buffer, &dst_bytes);
++#else
++        size_t const iconv_result =
++            iconv(conv_desc, &src_buffer, &src_bytes, &dst_buffer, &dst_bytes);
++#endif
+         if (static_cast<size_t>(-1) == iconv_result) {
+             if (EILSEQ == errno || EINVAL == errno) {
+@@ -407,7 +419,11 @@ std::u16string UTF8ToUTF16(const std::st
+     std::u16string out_buffer;
+     out_buffer.resize(out_buffer_size);
++#ifdef __NetBSD__
++    const char* src_buffer = (const char*)(&input[0]);
++#else
+     char* src_buffer = const_cast<char*>(&input[0]);
++#endif
+     size_t src_bytes = in_bytes;
+     char* dst_buffer = (char*)(&out_buffer[0]);
+     size_t dst_bytes = out_buffer.size();