summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cpptools')
-rw-r--r--src/plugins/cpptools/cpppreprocessor.cpp21
-rw-r--r--src/plugins/cpptools/cpppreprocessor.h6
2 files changed, 22 insertions, 5 deletions
diff --git a/src/plugins/cpptools/cpppreprocessor.cpp b/src/plugins/cpptools/cpppreprocessor.cpp
index 56668fe644..f8d14bf123 100644
--- a/src/plugins/cpptools/cpppreprocessor.cpp
+++ b/src/plugins/cpptools/cpppreprocessor.cpp
@@ -2,11 +2,15 @@
#include "cppmodelmanager.h"
+#include <coreplugin/editormanager/editormanager.h>
+
+#include <utils/fileutils.h>
#include <utils/hostosinfo.h>
#include <utils/textfileformat.h>
#include <QCoreApplication>
#include <QCryptographicHash>
+#include <QTextCodec>
/*!
* \class CppTools::Internal::CppPreprocessor
@@ -30,7 +34,8 @@ CppPreprocessor::CppPreprocessor(QPointer<CppModelManager> modelManager,
m_modelManager(modelManager),
m_dumpFileNameWhileParsing(dumpFileNameWhileParsing),
m_preprocess(this, &m_env),
- m_revision(0)
+ m_revision(0),
+ m_defaultCodec(Core::EditorManager::defaultTextCodec())
{
m_preprocess.setKeepComments(true);
}
@@ -41,7 +46,8 @@ CppPreprocessor::CppPreprocessor(QPointer<CppModelManager> modelManager, const S
m_modelManager(modelManager),
m_dumpFileNameWhileParsing(dumpFileNameWhileParsing),
m_preprocess(this, &m_env),
- m_revision(0)
+ m_revision(0),
+ m_defaultCodec(Core::EditorManager::defaultTextCodec())
{
m_preprocess.setKeepComments(true);
}
@@ -182,9 +188,14 @@ void CppPreprocessor::getFileContents(const QString &absoluteFilePath,
return;
}
- QString errStr;
- if (contents)
- Utils::TextFileFormat::readFileUTF8(absoluteFilePath, contents, &errStr);
+ if (contents) {
+ QString error;
+ if (Utils::TextFileFormat::readFileUTF8(absoluteFilePath, m_defaultCodec, contents, &error)
+ != Utils::TextFileFormat::ReadSuccess) {
+ qWarning("Error reading file \"%s\": \"%s\".", qPrintable(absoluteFilePath),
+ qPrintable(error));
+ }
+ }
if (revision)
*revision = 0;
}
diff --git a/src/plugins/cpptools/cpppreprocessor.h b/src/plugins/cpptools/cpppreprocessor.h
index d0d84ac8e3..40a9509701 100644
--- a/src/plugins/cpptools/cpppreprocessor.h
+++ b/src/plugins/cpptools/cpppreprocessor.h
@@ -9,6 +9,10 @@
#include <QHash>
#include <QPointer>
+QT_BEGIN_NAMESPACE
+class QTextCodec;
+QT_END_NAMESPACE
+
namespace CppTools {
namespace Internal {
@@ -75,6 +79,7 @@ protected:
virtual void sourceNeeded(unsigned line, const QString &fileName, IncludeType type);
private:
+ CppPreprocessor();
void addFrameworkPath(const QString &frameworkPath);
CPlusPlus::Snapshot m_snapshot;
@@ -92,6 +97,7 @@ private:
QSet<QString> m_processed;
unsigned m_revision;
QHash<QString, QString> m_fileNameCache;
+ QTextCodec *m_defaultCodec;
};
} // namespace Internal