summaryrefslogtreecommitdiffstats
path: root/clang/lib/Lex/MacroArgs.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-12-28 06:17:16 +0000
committerChris Lattner <sabre@nondot.org>2009-12-28 06:17:16 +0000
commit394f589e73224b0b07c7b92da7991d79a2f49e97 (patch)
tree60a2c98c0baae5decf830593f02f75b6160eae1a /clang/lib/Lex/MacroArgs.cpp
parent1ecffe13b2b1f14d5f37119ea1370da4223f39dc (diff)
downloadbcm5719-llvm-394f589e73224b0b07c7b92da7991d79a2f49e97.tar.gz
bcm5719-llvm-394f589e73224b0b07c7b92da7991d79a2f49e97.zip
The PreExpArgTokens array is indexed with an argument #,
not a token number. Fix the reserve logic to get the right amount of space. llvm-svn: 92202
Diffstat (limited to 'clang/lib/Lex/MacroArgs.cpp')
-rw-r--r--clang/lib/Lex/MacroArgs.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/clang/lib/Lex/MacroArgs.cpp b/clang/lib/Lex/MacroArgs.cpp
index c2cf623317e..4883898e3cd 100644
--- a/clang/lib/Lex/MacroArgs.cpp
+++ b/clang/lib/Lex/MacroArgs.cpp
@@ -132,13 +132,14 @@ bool MacroArgs::ArgNeedsPreexpansion(const Token *ArgTok,
/// getPreExpArgument - Return the pre-expanded form of the specified
/// argument.
const std::vector<Token> &
-MacroArgs::getPreExpArgument(unsigned Arg, Preprocessor &PP) {
- assert(Arg < NumUnexpArgTokens && "Invalid argument number!");
+MacroArgs::getPreExpArgument(unsigned Arg, const MacroInfo *MI,
+ Preprocessor &PP) {
+ assert(Arg < MI->getNumArgs() && "Invalid argument number!");
// If we have already computed this, return it.
- if (PreExpArgTokens.empty())
- PreExpArgTokens.resize(NumUnexpArgTokens);
-
+ if (PreExpArgTokens.size() < MI->getNumArgs())
+ PreExpArgTokens.resize(MI->getNumArgs());
+
std::vector<Token> &Result = PreExpArgTokens[Arg];
if (!Result.empty()) return Result;
OpenPOWER on IntegriCloud