From f45d6414ad6ef1d75f049a61411cd954bcae29c3 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Thu, 25 Oct 2012 10:55:00 +0200 Subject: Fix qmake's pro file cache to interact correctly with write_file When writing a file with write_file() we have to inform the pro file parser cache to discard the file if it's existant in the cache, to ensure that calling include() after write_file() always works. Change-Id: I7d09269a57de55ca30b0e11dd40770de9f919f64 Reviewed-by: Oswald Buddenhagen --- qmake/library/qmakebuiltins.cpp | 1 + qmake/library/qmakeparser.cpp | 6 ++++++ qmake/library/qmakeparser.h | 2 ++ 3 files changed, 9 insertions(+) (limited to 'qmake') diff --git a/qmake/library/qmakebuiltins.cpp b/qmake/library/qmakebuiltins.cpp index 4d4f6d9793..bafa867f8b 100644 --- a/qmake/library/qmakebuiltins.cpp +++ b/qmake/library/qmakebuiltins.cpp @@ -320,6 +320,7 @@ QMakeEvaluator::writeFile(const QString &ctx, const QString &fn, QIODevice::Open .arg(ctx, QDir::toNativeSeparators(qfi.filePath()), errStr)); return ReturnFalse; } + m_parser->discardFileFromCache(qfi.filePath()); return ReturnTrue; } diff --git a/qmake/library/qmakeparser.cpp b/qmake/library/qmakeparser.cpp index ca69ce8116..9bf716a880 100644 --- a/qmake/library/qmakeparser.cpp +++ b/qmake/library/qmakeparser.cpp @@ -222,6 +222,12 @@ ProFile *QMakeParser::parsedProBlock( return pro; } +void QMakeParser::discardFileFromCache(const QString &fileName) +{ + if (m_cache) + m_cache->discardFile(fileName); +} + bool QMakeParser::read(ProFile *pro) { QFile file(pro->fileName()); diff --git a/qmake/library/qmakeparser.h b/qmake/library/qmakeparser.h index 0b22a91004..0bab5eea3b 100644 --- a/qmake/library/qmakeparser.h +++ b/qmake/library/qmakeparser.h @@ -94,6 +94,8 @@ public: ProFile *parsedProBlock(const QString &contents, const QString &name, int line = 0, SubGrammar grammar = FullGrammar); + void discardFileFromCache(const QString &fileName); + private: enum ScopeNesting { NestNone = 0, -- cgit v1.2.3