From 88a98a2ef04e9a68364fd23d006142e107b2d026 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Sat, 16 Oct 2010 12:40:21 +0200 Subject: [PATCH] unicode: use short filenames when long filename doesn't work. Temporary solution for #2100 --- cli/cppcheck.vcproj | 2 +- lib/filelister_win32.cpp | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) 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)