Commit 828f5f83 authored by Max Kellermann's avatar Max Kellermann

lib/icu/CaseFold: disable broken strxfrm() callback

parent 1295a127
......@@ -19,6 +19,9 @@
#include "config.h"
#include "CaseFold.hxx"
#ifdef HAVE_ICU_CASE_FOLD
#include "util/AllocatedString.hxx"
#ifdef HAVE_ICU
......@@ -90,22 +93,10 @@ try {
return WideCharToMultiByte(CP_UTF8, buffer.get());
#else
size_t size = strlen(src) + 1;
std::unique_ptr<char[]> buffer(new char[size]);
size_t nbytes = strxfrm(buffer.get(), src, size);
if (nbytes >= size) {
/* buffer too small - reallocate and try again */
buffer.reset();
size = nbytes + 1;
buffer.reset(new char[size]);
nbytes = strxfrm(buffer.get(), src, size);
}
assert(nbytes < size);
assert(buffer[nbytes] == 0);
return AllocatedString<>::Donate(buffer.release());
#error not implemented
#endif
} catch (const std::runtime_error &) {
return AllocatedString<>::Duplicate(src);
}
#endif /* HAVE_ICU_CASE_FOLD */
......@@ -21,11 +21,11 @@
#define MPD_ICU_CASE_FOLD_HXX
#include "check.h"
#include "Compiler.h"
#if defined(HAVE_ICU) || defined(_WIN32)
#define HAVE_ICU_CASE_FOLD
#endif
#include "Compiler.h"
template<typename T> class AllocatedString;
......@@ -34,3 +34,5 @@ AllocatedString<char>
IcuCaseFold(const char *src) noexcept;
#endif
#endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment