aboutsummaryrefslogtreecommitdiff
path: root/Lex/IdentifierTable.cpp
diff options
context:
space:
mode:
authorSteve Naroff <snaroff@apple.com>2007-09-27 18:52:21 +0000
committerSteve Naroff <snaroff@apple.com>2007-09-27 18:52:21 +0000
commit4cbcb897fe7c4ff1ed5322ee4dfd490c581e33d5 (patch)
tree307de0909dc8c535fe3ad5fa601948bb87560849 /Lex/IdentifierTable.cpp
parentaead1539e7481fde73725d8eadeea82087982bf3 (diff)
Fix bug in SelectorInfo::getName() - method buffer needs to be passed by reference.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42411 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'Lex/IdentifierTable.cpp')
-rw-r--r--Lex/IdentifierTable.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/Lex/IdentifierTable.cpp b/Lex/IdentifierTable.cpp
index 6ab0ef1a69..de68435549 100644
--- a/Lex/IdentifierTable.cpp
+++ b/Lex/IdentifierTable.cpp
@@ -33,23 +33,25 @@ tok::ObjCKeywordKind Token::getObjCKeywordID() const {
return specId ? specId->getObjCKeywordID() : tok::objc_not_keyword;
}
-char *SelectorInfo::getName(llvm::SmallString<128> methodName) {
+char *SelectorInfo::getName(llvm::SmallVectorImpl<char> &methodName) {
int len=0;
methodName[0] = '\0';
if (NumArgs) {
keyword_iterator KeyIter = keyword_begin();
for (unsigned int i = 0; i < NumArgs; i++) {
if (KeyIter[i]) {
- methodName += KeyIter[i]->getName();
- len += strlen(KeyIter[i]->getName());
+ unsigned KeyLen = strlen(KeyIter[i]->getName());
+ methodName.append(KeyIter[i]->getName(), KeyIter[i]->getName()+KeyLen);
+ len += KeyLen;
}
- methodName += ":";
+ methodName.push_back(':');
len++;
}
} else {
IdentifierInfo **UnaryInfo = reinterpret_cast<IdentifierInfo **>(this+1);
- methodName += UnaryInfo[0]->getName();
- len += strlen(UnaryInfo[0]->getName());
+ unsigned NameLen = strlen(UnaryInfo[0]->getName());
+ methodName.append(UnaryInfo[0]->getName(), UnaryInfo[0]->getName()+NameLen);
+ len += NameLen;
}
methodName[len] = '\0';
return &methodName[0];