aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/cplusplus/pp-engine.cpp
diff options
context:
space:
mode:
authorErik Verbruggen <[email protected]>2013-03-05 09:56:08 +0100
committerEike Ziller <[email protected]>2013-04-08 11:20:55 +0200
commit2d500117163811a7059a3165a9b80f046a292b18 (patch)
treed285b7af7d7c28082f6e5f61dd08d19b9420e931 /src/libs/cplusplus/pp-engine.cpp
parent376a90e028c82577ac084974e98465934bbc6866 (diff)
C++: pre-allocate the output buffer.
This prevents a whole lot of re-allocations when the output byte array needs to grow. It also prevents some heap fragmentation for big files. Because the preprocessed output is short lived (it will be parsed immediately after, and then discarded), it is not squeezed to the minimal size. This would result in another allocation. Change-Id: I4974be5144f88cdfc4ddc9d8330200725aa90803 Reviewed-by: hjk <[email protected]> Reviewed-by: Eike Ziller <[email protected]>
Diffstat (limited to 'src/libs/cplusplus/pp-engine.cpp')
-rw-r--r--src/libs/cplusplus/pp-engine.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp
index 1c45e61e2a8..980f59c0a26 100644
--- a/src/libs/cplusplus/pp-engine.cpp
+++ b/src/libs/cplusplus/pp-engine.cpp
@@ -702,6 +702,7 @@ QByteArray Preprocessor::run(const QString &fileName,
m_scratchBuffer.clear();
QByteArray preprocessed, includeGuardMacroName;
+ preprocessed.reserve(source.size() * 2); // multiply by 2 because we insert #gen lines.
preprocess(fileName, source, &preprocessed, &includeGuardMacroName, noLines,
markGeneratedTokens, false);
if (!includeGuardMacroName.isEmpty())