diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp index 285ac31420007..b644e5699646c 100644 --- a/clang/tools/libclang/CIndex.cpp +++ b/clang/tools/libclang/CIndex.cpp @@ -5066,7 +5066,7 @@ CXString clang_getFileName(CXFile SFile) { return cxstring::createNull(); FileEntryRef FEnt = *cxfile::getFileEntryRef(SFile); - return cxstring::createRef(FEnt.getName()); + return cxstring::createDup(FEnt.getName()); } time_t clang_getFileTime(CXFile SFile) { @@ -5154,7 +5154,7 @@ CXString clang_File_tryGetRealPathName(CXFile SFile) { return cxstring::createNull(); FileEntryRef FEnt = *cxfile::getFileEntryRef(SFile); - return cxstring::createRef(FEnt.getFileEntry().tryGetRealPathName()); + return cxstring::createDup(FEnt.getFileEntry().tryGetRealPathName()); } //===----------------------------------------------------------------------===// @@ -9234,7 +9234,7 @@ CXString clang_Cursor_getRawCommentText(CXCursor C) { // Don't duplicate the string because RawText points directly into source // code. - return cxstring::createRef(RawText); + return cxstring::createDup(RawText); } CXString clang_Cursor_getBriefCommentText(CXCursor C) { @@ -9250,7 +9250,7 @@ CXString clang_Cursor_getBriefCommentText(CXCursor C) { // Don't duplicate the string because RawComment ensures that this memory // will not go away. - return cxstring::createRef(BriefText); + return cxstring::createDup(BriefText); } return cxstring::createNull(); @@ -10081,7 +10081,7 @@ cxindex::Logger::~Logger() { } CXString clang_getBinaryOperatorKindSpelling(enum CXBinaryOperatorKind kind) { - return cxstring::createRef( + return cxstring::createDup( BinaryOperator::getOpcodeStr(static_cast(kind - 1))); } @@ -10100,7 +10100,7 @@ enum CXBinaryOperatorKind clang_getCursorBinaryOperatorKind(CXCursor cursor) { } CXString clang_getUnaryOperatorKindSpelling(enum CXUnaryOperatorKind kind) { - return cxstring::createRef( + return cxstring::createDup( UnaryOperator::getOpcodeStr(static_cast(kind - 1))); } diff --git a/clang/tools/libclang/CIndexCodeCompletion.cpp b/clang/tools/libclang/CIndexCodeCompletion.cpp index 850c004680fd9..188255debbc45 100644 --- a/clang/tools/libclang/CIndexCodeCompletion.cpp +++ b/clang/tools/libclang/CIndexCodeCompletion.cpp @@ -223,8 +223,8 @@ clang_getCompletionParent(CXCompletionString completion_string, CodeCompletionString *CCStr = (CodeCompletionString *)completion_string; if (!CCStr) return cxstring::createNull(); - - return cxstring::createRef(CCStr->getParentContextName()); + + return cxstring::createDup(CCStr->getParentContextName()); } CXString diff --git a/clang/tools/libclang/CIndexDiagnostic.cpp b/clang/tools/libclang/CIndexDiagnostic.cpp index 92271d9c37f86..e4f2d63052f1a 100644 --- a/clang/tools/libclang/CIndexDiagnostic.cpp +++ b/clang/tools/libclang/CIndexDiagnostic.cpp @@ -400,7 +400,7 @@ unsigned clang_getDiagnosticCategory(CXDiagnostic Diag) { CXString clang_getDiagnosticCategoryName(unsigned Category) { // Kept for backward compatibility. - return cxstring::createRef(DiagnosticIDs::getCategoryNameFromID(Category)); + return cxstring::createDup(DiagnosticIDs::getCategoryNameFromID(Category)); } CXString clang_getDiagnosticCategoryText(CXDiagnostic Diag) { diff --git a/clang/tools/libclang/CXComment.cpp b/clang/tools/libclang/CXComment.cpp index e87efd23578f0..668bd0a1f2fd2 100644 --- a/clang/tools/libclang/CXComment.cpp +++ b/clang/tools/libclang/CXComment.cpp @@ -129,7 +129,7 @@ CXString clang_TextComment_getText(CXComment CXC) { if (!TC) return cxstring::createNull(); - return cxstring::createRef(TC->getText()); + return cxstring::createDup(TC->getText()); } CXString clang_InlineCommandComment_getCommandName(CXComment CXC) { @@ -138,7 +138,7 @@ CXString clang_InlineCommandComment_getCommandName(CXComment CXC) { return cxstring::createNull(); const CommandTraits &Traits = getCommandTraits(CXC); - return cxstring::createRef(ICC->getCommandName(Traits)); + return cxstring::createDup(ICC->getCommandName(Traits)); } enum CXCommentInlineCommandRenderKind @@ -180,7 +180,7 @@ CXString clang_InlineCommandComment_getArgText(CXComment CXC, if (!ICC || ArgIdx >= ICC->getNumArgs()) return cxstring::createNull(); - return cxstring::createRef(ICC->getArgText(ArgIdx)); + return cxstring::createDup(ICC->getArgText(ArgIdx)); } CXString clang_HTMLTagComment_getTagName(CXComment CXC) { @@ -188,7 +188,7 @@ CXString clang_HTMLTagComment_getTagName(CXComment CXC) { if (!HTC) return cxstring::createNull(); - return cxstring::createRef(HTC->getTagName()); + return cxstring::createDup(HTC->getTagName()); } unsigned clang_HTMLStartTagComment_isSelfClosing(CXComment CXC) { @@ -212,7 +212,7 @@ CXString clang_HTMLStartTag_getAttrName(CXComment CXC, unsigned AttrIdx) { if (!HST || AttrIdx >= HST->getNumAttrs()) return cxstring::createNull(); - return cxstring::createRef(HST->getAttr(AttrIdx).Name); + return cxstring::createDup(HST->getAttr(AttrIdx).Name); } CXString clang_HTMLStartTag_getAttrValue(CXComment CXC, unsigned AttrIdx) { @@ -220,7 +220,7 @@ CXString clang_HTMLStartTag_getAttrValue(CXComment CXC, unsigned AttrIdx) { if (!HST || AttrIdx >= HST->getNumAttrs()) return cxstring::createNull(); - return cxstring::createRef(HST->getAttr(AttrIdx).Value); + return cxstring::createDup(HST->getAttr(AttrIdx).Value); } CXString clang_BlockCommandComment_getCommandName(CXComment CXC) { @@ -229,7 +229,7 @@ CXString clang_BlockCommandComment_getCommandName(CXComment CXC) { return cxstring::createNull(); const CommandTraits &Traits = getCommandTraits(CXC); - return cxstring::createRef(BCC->getCommandName(Traits)); + return cxstring::createDup(BCC->getCommandName(Traits)); } unsigned clang_BlockCommandComment_getNumArgs(CXComment CXC) { @@ -246,7 +246,7 @@ CXString clang_BlockCommandComment_getArgText(CXComment CXC, if (!BCC || ArgIdx >= BCC->getNumArgs()) return cxstring::createNull(); - return cxstring::createRef(BCC->getArgText(ArgIdx)); + return cxstring::createDup(BCC->getArgText(ArgIdx)); } CXComment clang_BlockCommandComment_getParagraph(CXComment CXC) { @@ -262,7 +262,7 @@ CXString clang_ParamCommandComment_getParamName(CXComment CXC) { if (!PCC || !PCC->hasParamName()) return cxstring::createNull(); - return cxstring::createRef(PCC->getParamNameAsWritten()); + return cxstring::createDup(PCC->getParamNameAsWritten()); } unsigned clang_ParamCommandComment_isParamIndexValid(CXComment CXC) { @@ -313,7 +313,7 @@ CXString clang_TParamCommandComment_getParamName(CXComment CXC) { if (!TPCC || !TPCC->hasParamName()) return cxstring::createNull(); - return cxstring::createRef(TPCC->getParamNameAsWritten()); + return cxstring::createDup(TPCC->getParamNameAsWritten()); } unsigned clang_TParamCommandComment_isParamPositionValid(CXComment CXC) { @@ -346,7 +346,7 @@ CXString clang_VerbatimBlockLineComment_getText(CXComment CXC) { if (!VBL) return cxstring::createNull(); - return cxstring::createRef(VBL->getText()); + return cxstring::createDup(VBL->getText()); } CXString clang_VerbatimLineComment_getText(CXComment CXC) { @@ -354,7 +354,7 @@ CXString clang_VerbatimLineComment_getText(CXComment CXC) { if (!VLC) return cxstring::createNull(); - return cxstring::createRef(VLC->getText()); + return cxstring::createDup(VLC->getText()); } //===----------------------------------------------------------------------===// diff --git a/clang/tools/libclang/CXStoredDiagnostic.cpp b/clang/tools/libclang/CXStoredDiagnostic.cpp index 6fb3050f5f844..243e55f98a7dc 100644 --- a/clang/tools/libclang/CXStoredDiagnostic.cpp +++ b/clang/tools/libclang/CXStoredDiagnostic.cpp @@ -46,7 +46,7 @@ CXSourceLocation CXStoredDiagnostic::getLocation() const { } CXString CXStoredDiagnostic::getSpelling() const { - return cxstring::createRef(Diag.getMessage()); + return cxstring::createDup(Diag.getMessage()); } CXString CXStoredDiagnostic::getDiagnosticOption(CXString *Disable) const { @@ -75,7 +75,7 @@ unsigned CXStoredDiagnostic::getCategory() const { CXString CXStoredDiagnostic::getCategoryText() const { unsigned catID = DiagnosticIDs::getCategoryNumberForDiag(Diag.getID()); - return cxstring::createRef(DiagnosticIDs::getCategoryNameFromID(catID)); + return cxstring::createDup(DiagnosticIDs::getCategoryNameFromID(catID)); } unsigned CXStoredDiagnostic::getNumRanges() const { diff --git a/clang/tools/libclang/CXString.cpp b/clang/tools/libclang/CXString.cpp index aaa8f8eeb67a1..76e68fcf7a8e1 100644 --- a/clang/tools/libclang/CXString.cpp +++ b/clang/tools/libclang/CXString.cpp @@ -77,19 +77,6 @@ CXString createDup(const char *String) { return Str; } -CXString createRef(StringRef String) { - if (!String.data()) - return createNull(); - - // If the string is empty, it might point to a position in another string - // while having zero length. Make sure we don't create a reference to the - // larger string. - if (String.empty()) - return createEmpty(); - - return createDup(String); -} - CXString createDup(StringRef String) { CXString Result; char *Spelling = static_cast(llvm::safe_malloc(String.size() + 1)); diff --git a/clang/tools/libclang/CXString.h b/clang/tools/libclang/CXString.h index 809bdec3d677f..54c9293e0483e 100644 --- a/clang/tools/libclang/CXString.h +++ b/clang/tools/libclang/CXString.h @@ -46,12 +46,6 @@ CXString createRef(const char *String); /// \p String can be changed or freed by the caller. CXString createDup(const char *String); -/// Create a CXString object from a StringRef. New CXString may -/// contain a pointer to the undrelying data of \p String. -/// -/// \p String should not be changed by the caller afterwards. -CXString createRef(StringRef String); - /// Create a CXString object from a StringRef. New CXString will /// contain a copy of \p String. ///