diff options
author | Chris Lattner <sabre@nondot.org> | 2009-12-28 06:17:16 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-12-28 06:17:16 +0000 |
commit | 394f589e73224b0b07c7b92da7991d79a2f49e97 (patch) | |
tree | 60a2c98c0baae5decf830593f02f75b6160eae1a /clang/lib/Lex/MacroArgs.cpp | |
parent | 1ecffe13b2b1f14d5f37119ea1370da4223f39dc (diff) | |
download | bcm5719-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.cpp | 11 |
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; |