diff options
author | Edward Welbourne <edward.welbourne@theqtcompany.com> | 2015-11-12 11:12:52 +0100 |
---|---|---|
committer | Edward Welbourne <edward.welbourne@theqtcompany.com> | 2015-11-20 15:01:45 +0000 |
commit | 3780b3da9969a67f4ebd92813b73f8ca15632707 (patch) | |
tree | 7c41f58f19db84c116855db0798ef02619199e9f /qmake | |
parent | 00a855d64326c03f1e7b05ae335c774e910405d7 (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.cpp | 20 |
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; |