Skip to content

Commit 61222f4

Browse files
authored
[k2] fix iconv (#1587)
1 parent 0f5df98 commit 61222f4

3 files changed

Lines changed: 5 additions & 3 deletions

File tree

runtime-light/k2-platform/k2-api.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ inline constexpr size_t DEFAULT_MEMORY_ALIGN = 16;
3636
} // namespace k2_impl_
3737

3838
inline constexpr int32_t errno_ok = 0;
39+
inline constexpr int32_t errno_e2big = E2BIG;
3940
inline constexpr int32_t errno_ebusy = EBUSY;
4041
inline constexpr int32_t errno_enodev = ENODEV;
4142
inline constexpr int32_t errno_einval = EINVAL;

runtime-light/stdlib/system/system-functions.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@ Optional<string> f$iconv(const string& input_encoding, const string& output_enco
2828
char* input_buf{const_cast<char*>(input_str.c_str())};
2929
char* output_buf{output_str.buffer()};
3030
size_t res{};
31-
if (k2::iconv(std::addressof(res), cd, std::addressof(input_buf), std::addressof(input_len), std::addressof(output_buf), std::addressof(output_len)) ==
32-
k2::errno_ok) {
31+
if (auto iconv_result{
32+
k2::iconv(std::addressof(res), cd, std::addressof(input_buf), std::addressof(input_len), std::addressof(output_buf), std::addressof(output_len))};
33+
iconv_result != k2::errno_e2big) {
3334
output_str.shrink(static_cast<string::size_type>(output_buf - output_str.c_str()));
3435
return output_str;
3536
}

tests/phpt/dl/475_convert_to_win.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@ok benchmark k2_skip
1+
@ok benchmark
22
<?php
33
$str = "ìàìà ìûëà ðàìó!!! asfmklasdfasdgbsfbvdf buydfbdvbdfb vdfv dfv";
44

0 commit comments

Comments
 (0)