Fix bug in SelectorInfo::getName() - method buffer needs to be passed by reference.
llvm-svn: 42411
This commit is contained in:
parent
e6f92253f5
commit
65ca537b55
|
@ -33,23 +33,25 @@ tok::ObjCKeywordKind Token::getObjCKeywordID() const {
|
||||||
return specId ? specId->getObjCKeywordID() : tok::objc_not_keyword;
|
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;
|
int len=0;
|
||||||
methodName[0] = '\0';
|
methodName[0] = '\0';
|
||||||
if (NumArgs) {
|
if (NumArgs) {
|
||||||
keyword_iterator KeyIter = keyword_begin();
|
keyword_iterator KeyIter = keyword_begin();
|
||||||
for (unsigned int i = 0; i < NumArgs; i++) {
|
for (unsigned int i = 0; i < NumArgs; i++) {
|
||||||
if (KeyIter[i]) {
|
if (KeyIter[i]) {
|
||||||
methodName += KeyIter[i]->getName();
|
unsigned KeyLen = strlen(KeyIter[i]->getName());
|
||||||
len += strlen(KeyIter[i]->getName());
|
methodName.append(KeyIter[i]->getName(), KeyIter[i]->getName()+KeyLen);
|
||||||
|
len += KeyLen;
|
||||||
}
|
}
|
||||||
methodName += ":";
|
methodName.push_back(':');
|
||||||
len++;
|
len++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
IdentifierInfo **UnaryInfo = reinterpret_cast<IdentifierInfo **>(this+1);
|
IdentifierInfo **UnaryInfo = reinterpret_cast<IdentifierInfo **>(this+1);
|
||||||
methodName += UnaryInfo[0]->getName();
|
unsigned NameLen = strlen(UnaryInfo[0]->getName());
|
||||||
len += strlen(UnaryInfo[0]->getName());
|
methodName.append(UnaryInfo[0]->getName(), UnaryInfo[0]->getName()+NameLen);
|
||||||
|
len += NameLen;
|
||||||
}
|
}
|
||||||
methodName[len] = '\0';
|
methodName[len] = '\0';
|
||||||
return &methodName[0];
|
return &methodName[0];
|
||||||
|
|
|
@ -194,7 +194,8 @@ public:
|
||||||
}
|
}
|
||||||
// Derive the full selector name, placing the result into methodBuffer.
|
// Derive the full selector name, placing the result into methodBuffer.
|
||||||
// As a convenience, a pointer to the first character is returned.
|
// As a convenience, a pointer to the first character is returned.
|
||||||
char *getName(llvm::SmallString<128> methodBuffer);
|
// Example usage: llvm::SmallString<128> mbuf; Selector->getName(mbuf);
|
||||||
|
char *getName(llvm::SmallVectorImpl<char> &methodBuffer);
|
||||||
|
|
||||||
unsigned getNumArgs() const { return NumArgs; }
|
unsigned getNumArgs() const { return NumArgs; }
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue