From fa122cc20225d44709b9a02ce0fd7fa7af55a12f Mon Sep 17 00:00:00 2001 From: eidheim Date: Sun, 12 Jul 2015 09:58:29 +0200 Subject: [PATCH 1/2] Fix to see if functions are available. --- src/CompletionString.cc | 23 ++++++++++------------- src/CompletionString.h | 1 + 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/CompletionString.cc b/src/CompletionString.cc index 07dd5bc..c3b357b 100644 --- a/src/CompletionString.cc +++ b/src/CompletionString.cc @@ -5,23 +5,20 @@ CompletionString(const CXCompletionString &str) { str_ = str; } -int clang::CompletionString:: -get_num_chunks() { - if (clang_getCompletionAvailability(str_) == CXAvailability_Available) +bool clang::CompletionString::available() { + return clang_getCompletionAvailability(str_) == CXAvailability_Available; +} + +int clang::CompletionString::get_num_chunks() { return clang_getNumCompletionChunks(str_); - else - return 0; } -std::vector clang::CompletionString:: -get_chunks() { +std::vector clang::CompletionString::get_chunks() { std::vector res; - if (clang_getCompletionAvailability(str_) == CXAvailability_Available) { - for (size_t i = 0; i < get_num_chunks(); i++) { - res.emplace_back(clang_getCString(clang_getCompletionChunkText(str_, i)), - static_cast - (clang_getCompletionChunkKind(str_, i))); - } + for (size_t i = 0; i < get_num_chunks(); i++) { + res.emplace_back(clang_getCString(clang_getCompletionChunkText(str_, i)), + static_cast + (clang_getCompletionChunkKind(str_, i))); } return res; } diff --git a/src/CompletionString.h b/src/CompletionString.h index 0018bc3..eee7013 100644 --- a/src/CompletionString.h +++ b/src/CompletionString.h @@ -27,6 +27,7 @@ namespace clang { class CompletionString { public: + bool available(); std::vector get_chunks(); std::string get_brief_comments(); int get_num_chunks(); From febd7ca3b6fd38e15434b9a485a4b9a54267ef74 Mon Sep 17 00:00:00 2001 From: eidheim Date: Sun, 12 Jul 2015 10:11:08 +0200 Subject: [PATCH 2/2] Fixed memory leak. --- src/CompletionString.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/CompletionString.cc b/src/CompletionString.cc index c3b357b..68cc0f4 100644 --- a/src/CompletionString.cc +++ b/src/CompletionString.cc @@ -16,9 +16,9 @@ int clang::CompletionString::get_num_chunks() { std::vector clang::CompletionString::get_chunks() { std::vector res; for (size_t i = 0; i < get_num_chunks(); i++) { - res.emplace_back(clang_getCString(clang_getCompletionChunkText(str_, i)), - static_cast - (clang_getCompletionChunkKind(str_, i))); + auto cxstr=clang_getCompletionChunkText(str_, i); + res.emplace_back(clang_getCString(cxstr), static_cast (clang_getCompletionChunkKind(str_, i))); + clang_disposeString(cxstr); } return res; }