diff --git a/src/qdoc/clangcodeparser.cpp b/src/qdoc/clangcodeparser.cpp
index 77055ca9fe0e39fad5ef0cc738577b8bf7f03dd3..ec145c7362d9bf5f1a4b9296fb903e77fb48fe18 100644
--- a/src/qdoc/clangcodeparser.cpp
+++ b/src/qdoc/clangcodeparser.cpp
@@ -1176,7 +1176,7 @@ void ClangCodeParser::getMoreArgs()
  */
 void ClangCodeParser::buildPCH()
 {
-    if (!pchFileDir_) {
+    if (!pchFileDir_ && !moduleHeader().isEmpty()) {
         pchFileDir_.reset(new QTemporaryDir(QDir::tempPath() + QLatin1String("/qdoc_pch")));
         if (pchFileDir_->isValid()) {
             //const QByteArray module = qdb_->primaryTreeRoot()->tree()->camelCaseModuleName().toUtf8();
diff --git a/src/qdoc/config.cpp b/src/qdoc/config.cpp
index de7f23ce6eb28557be529da9abac9726da1978a9..64c8786f63b004e576253ae696987c1572c9b961 100644
--- a/src/qdoc/config.cpp
+++ b/src/qdoc/config.cpp
@@ -397,12 +397,17 @@ QSet<QString> Config::getOutputFormats() const
 
   If \a var is not contained in the location map it returns
   \a defaultString.
+
+  \note By default, \a defaultString is a null string. If \a var
+  is found but contains an empty string, that is returned instead.
+  This allows determining whether a configuration variable is
+  undefined (null string) or defined as empty (empty string).
  */
 QString Config::getString(const QString& var, const QString& defaultString) const
 {
     QList<ConfigVar> configVars = configVars_.values(var);
     if (!configVars.empty()) {
-        QString value;
+        QString value("");
         int i = configVars.size() - 1;
         while (i >= 0) {
             const ConfigVar& cv = configVars[i];
diff --git a/src/qdoc/main.cpp b/src/qdoc/main.cpp
index 79cde7950f4e21bb2134816cbfa327755d4d344f..563915d4961dbcf2a9d60f7aaf59aa16abd5c5d5 100644
--- a/src/qdoc/main.cpp
+++ b/src/qdoc/main.cpp
@@ -366,7 +366,7 @@ static void processQdocconfFile(const QString &fileName)
         qdb->newPrimaryTree(project);
     else
         qdb->setPrimaryTree(project);
-    if (!moduleHeader.isEmpty())
+    if (!moduleHeader.isNull())
         clangParser_->setModuleHeader(moduleHeader);
     else
         clangParser_->setModuleHeader(project);