| Index: src/plugin/PluginUtil.cpp |
| =================================================================== |
| --- a/src/plugin/PluginUtil.cpp |
| +++ b/src/plugin/PluginUtil.cpp |
| @@ -55,6 +55,18 @@ |
| std::wstring ToLowerString(const std::wstring& s) |
| { |
| - return ToWstring(ToCString(s).MakeLower()); |
| + std::wstring lower(s); // Copy the argument |
| + /* |
| + * Documentation for '_wcslwr_s' https://msdn.microsoft.com/en-us/library/y889wzfw.aspx |
| + * This documentation is incorrect on an important point. |
| + * Regarding parameter validation, it says "length of string" where it should say "length of buffer". |
| + * The call below has argument "length + 1" to include the terminating null character in the buffer. |
| + */ |
| + auto e = _wcslwr_s(const_cast<wchar_t*>(lower.c_str()), lower.length() + 1); // uses the current locale |
| + if (e != 0) |
| + { |
| + throw std::logic_error("Error code returned from _wcslwr_s()"); |
| + } |
| + return lower; |
| } |