diff --git a/cli/cppcheck.vcproj b/cli/cppcheck.vcproj index 79a4da195..376a39ef1 100755 --- a/cli/cppcheck.vcproj +++ b/cli/cppcheck.vcproj @@ -47,7 +47,7 @@ Optimization="0" WholeProgramOptimization="false" AdditionalIncludeDirectories="..\lib" - PreprocessorDefinitions="_DEBUG;WIN32;_CRT_SECURE_NO_WARNINGS" + PreprocessorDefinitions="_DEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;UNICODE" BasicRuntimeChecks="3" RuntimeLibrary="1" TreatWChar_tAsBuiltInType="false" diff --git a/lib/filelister_win32.cpp b/lib/filelister_win32.cpp index 58a55e9af..13ba19844 100644 --- a/lib/filelister_win32.cpp +++ b/lib/filelister_win32.cpp @@ -148,6 +148,12 @@ void FileListerWin32::recursiveAddFiles(std::vector &filenames, con #if defined(UNICODE) char * ansiFfd = new char[wcslen(ffd.cFileName) + 1]; TransformUcs2ToAnsi(ffd.cFileName, ansiFfd, wcslen(ffd.cFileName) + 1); + if (strchr(ansiFfd, '?')) + { + delete [] ansiFfd; + ansiFfd = new char[wcslen(ffd.cAlternateFileName) + 1]; + TransformUcs2ToAnsi(ffd.cAlternateFileName, ansiFfd, wcslen(ffd.cAlternateFileName) + 1); + } #else // defined(UNICODE) char * ansiFfd = &ffd.cFileName[0]; #endif // defined(UNICODE)