summaryrefslogtreecommitdiffstats
path: root/qmake
diff options
context:
space:
mode:
authorEdward Welbourne <edward.welbourne@theqtcompany.com>2015-11-12 11:12:52 +0100
committerEdward Welbourne <edward.welbourne@theqtcompany.com>2015-11-20 15:01:45 +0000
commit3780b3da9969a67f4ebd92813b73f8ca15632707 (patch)
tree7c41f58f19db84c116855db0798ef02619199e9f /qmake
parent00a855d64326c03f1e7b05ae335c774e910405d7 (diff)
Skip spaces (after #) earlier to catch blank line or end-of-buffer.
The C preprocessor does believe in a # [nothing] line; and we may as well give up before checking for keywords if we've run out of buffer. Change-Id: I64dc3ad2808435389d0d7b56dcbc9d92ae72aa6e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Diffstat (limited to 'qmake')
-rw-r--r--qmake/generators/makefiledeps.cpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/qmake/generators/makefiledeps.cpp b/qmake/generators/makefiledeps.cpp
index 535f0561cc..7cdd757052 100644
--- a/qmake/generators/makefiledeps.cpp
+++ b/qmake/generators/makefiledeps.cpp
@@ -539,8 +539,18 @@ bool QMakeSourceFileInfo::findDeps(SourceFile *file)
break;
// preprocessor directive
- if (beginning && buffer[x] == '#')
+ if (beginning && buffer[x] == '#') {
+ // Advance to start of preprocessing directive
+ while (++x < buffer_len
+ && (buffer[x] == ' ' || buffer[x] == '\t')) {} // skip
+
+ if (qmake_endOfLine(buffer[x])) {
+ ++line_count;
+ beginning = 1;
+ continue;
+ }
break;
+ }
// quoted strings
if (buffer[x] == '\'' || buffer[x] == '"') {
@@ -561,13 +571,7 @@ bool QMakeSourceFileInfo::findDeps(SourceFile *file)
if(x >= buffer_len)
break;
- //got a preprocessor symbol
- ++x;
- while(x < buffer_len) {
- if (buffer[x] != ' ' && buffer[x] != '\t')
- break;
- ++x;
- }
+ // Got a preprocessor directive
int keyword_len = 0;
const char *const keyword = buffer + x;