#include "switch/types.h" #include "switch/runtime/util/utf.h" ssize_t utf32_to_utf16(uint16_t *out, const uint32_t *in, size_t len) { ssize_t rc = 0; ssize_t units; uint16_t encoded[2]; while(*in > 0) { units = encode_utf16(encoded, *in++); if(units == -1) return -1; if(out != NULL) { if(rc + units <= len) { *out++ = encoded[0]; if(units > 1) *out++ = encoded[1]; } } if(SSIZE_MAX - units >= rc) rc += units; else return -1; } return rc; }