diff --git a/src/Main.cpp b/src/Main.cpp index 016e1ae..f7d677b 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -315,7 +315,7 @@ namespace StringCvt size_t EstimateWideToCodepage(unsigned codepage, wchar_t const* source, size_t sourceSize) { - return static_cast(::WideCharToMultiByte(codepage, 0, source, checked_cast(wcslen_max(source, sourceSize)), nullptr, 0, "?", NULL) + 1); + return static_cast(::WideCharToMultiByte(codepage, 0, source, checked_cast(sourceSize), nullptr, 0, "?", NULL) + 1); } class AnsiFromWide { @@ -324,11 +324,15 @@ namespace StringCvt AnsiFromWide(AnsiFromWide const& source) : buffer(source.buffer) { } AnsiFromWide(wchar_t const* source, size_t sourceSize = ~0) { + if (sourceSize == ~0) + sourceSize = wcslen(source); Convert(source, sourceSize); } void Convert(wchar_t const* source, size_t sourceSize = ~0) { + if (sourceSize == ~0) + sourceSize = wcslen(source); size_t size = EstimateWideToCodepage(CP_ACP, source, sourceSize); buffer.resize(size); ConvertWideToCodepage(CP_ACP, buffer.data(), size, source, sourceSize);