mirror of
https://github.com/fmtlib/fmt.git
synced 2024-12-25 15:21:54 +00:00
Fix warnings
This commit is contained in:
parent
cdcdacef9c
commit
c3ba615c65
@ -612,14 +612,17 @@ FMT_FUNC void fmt::internal::report_unknown_type(char code, const char *type) {
|
|||||||
#if FMT_USE_WINDOWS_H
|
#if FMT_USE_WINDOWS_H
|
||||||
|
|
||||||
FMT_FUNC fmt::internal::UTF8ToUTF16::UTF8ToUTF16(fmt::StringRef s) {
|
FMT_FUNC fmt::internal::UTF8ToUTF16::UTF8ToUTF16(fmt::StringRef s) {
|
||||||
int length = MultiByteToWideChar(
|
|
||||||
CP_UTF8, MB_ERR_INVALID_CHARS, s.data(), s.size(), 0, 0);
|
|
||||||
static const char ERROR_MSG[] = "cannot convert string from UTF-8 to UTF-16";
|
static const char ERROR_MSG[] = "cannot convert string from UTF-8 to UTF-16";
|
||||||
|
if (s.size() > INT_MAX)
|
||||||
|
FMT_THROW(WindowsError(ERROR_INVALID_PARAMETER, ERROR_MSG));
|
||||||
|
int s_size = static_cast<int>(s.size());
|
||||||
|
int length = MultiByteToWideChar(
|
||||||
|
CP_UTF8, MB_ERR_INVALID_CHARS, s.data(), s_size, 0, 0);
|
||||||
if (length == 0)
|
if (length == 0)
|
||||||
FMT_THROW(WindowsError(GetLastError(), ERROR_MSG));
|
FMT_THROW(WindowsError(GetLastError(), ERROR_MSG));
|
||||||
buffer_.resize(length + 1);
|
buffer_.resize(length + 1);
|
||||||
length = MultiByteToWideChar(
|
length = MultiByteToWideChar(
|
||||||
CP_UTF8, MB_ERR_INVALID_CHARS, s.data(), s.size(), &buffer_[0], length);
|
CP_UTF8, MB_ERR_INVALID_CHARS, s.data(), s_size, &buffer_[0], length);
|
||||||
if (length == 0)
|
if (length == 0)
|
||||||
FMT_THROW(WindowsError(GetLastError(), ERROR_MSG));
|
FMT_THROW(WindowsError(GetLastError(), ERROR_MSG));
|
||||||
buffer_[length] = 0;
|
buffer_[length] = 0;
|
||||||
|
@ -726,12 +726,14 @@ TEST(UtilTest, UTF8ToUTF16) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename Converter, typename Char>
|
template <typename Converter, typename Char>
|
||||||
void check_utf_conversion_error(const char *message) {
|
void check_utf_conversion_error(
|
||||||
|
const char *message,
|
||||||
|
fmt::BasicStringRef<Char> str = fmt::BasicStringRef<Char>(0, 0)) {
|
||||||
fmt::MemoryWriter out;
|
fmt::MemoryWriter out;
|
||||||
fmt::internal::format_windows_error(out, ERROR_INVALID_PARAMETER, message);
|
fmt::internal::format_windows_error(out, ERROR_INVALID_PARAMETER, message);
|
||||||
fmt::SystemError error(0, "");
|
fmt::SystemError error(0, "");
|
||||||
try {
|
try {
|
||||||
Converter(fmt::BasicStringRef<Char>(0, 0));
|
(Converter)(str);
|
||||||
} catch (const fmt::SystemError &e) {
|
} catch (const fmt::SystemError &e) {
|
||||||
error = e;
|
error = e;
|
||||||
}
|
}
|
||||||
@ -745,14 +747,17 @@ TEST(UtilTest, UTF16ToUTF8Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(UtilTest, UTF8ToUTF16Error) {
|
TEST(UtilTest, UTF8ToUTF16Error) {
|
||||||
|
const char *message = "cannot convert string from UTF-8 to UTF-16";
|
||||||
|
check_utf_conversion_error<fmt::internal::UTF8ToUTF16, char>(message);
|
||||||
check_utf_conversion_error<fmt::internal::UTF8ToUTF16, char>(
|
check_utf_conversion_error<fmt::internal::UTF8ToUTF16, char>(
|
||||||
"cannot convert string from UTF-8 to UTF-16");
|
message, fmt::StringRef("foo", INT_MAX + 1u));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(UtilTest, UTF16ToUTF8Convert) {
|
TEST(UtilTest, UTF16ToUTF8Convert) {
|
||||||
fmt::internal::UTF16ToUTF8 u;
|
fmt::internal::UTF16ToUTF8 u;
|
||||||
EXPECT_EQ(ERROR_INVALID_PARAMETER, u.convert(fmt::WStringRef(0, 0)));
|
EXPECT_EQ(ERROR_INVALID_PARAMETER, u.convert(fmt::WStringRef(0, 0)));
|
||||||
EXPECT_EQ(ERROR_INVALID_PARAMETER, u.convert(fmt::WStringRef(L"foo", INT_MAX + 1u)));
|
EXPECT_EQ(ERROR_INVALID_PARAMETER,
|
||||||
|
u.convert(fmt::WStringRef(L"foo", INT_MAX + 1u)));
|
||||||
}
|
}
|
||||||
#endif // _WIN32
|
#endif // _WIN32
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user