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
diff --git a/Lex/IdentifierTable.cpp b/Lex/IdentifierTable.cpp
index 6ab0ef1..de68435 100644
--- a/Lex/IdentifierTable.cpp
+++ b/Lex/IdentifierTable.cpp
@@ -33,23 +33,25 @@
   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];