summaryrefslogtreecommitdiffstats
path: root/lldb/source/Core
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Core')
-rw-r--r--lldb/source/Core/Logging.cpp2
-rw-r--r--lldb/source/Core/StringList.cpp35
2 files changed, 12 insertions, 25 deletions
diff --git a/lldb/source/Core/Logging.cpp b/lldb/source/Core/Logging.cpp
index 8b6d7ed9b1c..068a3215680 100644
--- a/lldb/source/Core/Logging.cpp
+++ b/lldb/source/Core/Logging.cpp
@@ -93,7 +93,7 @@ void lldb_private::DisableLog(const char **categories, Stream *feedback_strm) {
if (log != nullptr) {
uint32_t flag_bits = 0;
- if (categories[0] != nullptr) {
+ if (categories && categories[0]) {
flag_bits = log->GetMask().Get();
for (size_t i = 0; categories[i] != nullptr; ++i) {
const char *arg = categories[i];
diff --git a/lldb/source/Core/StringList.cpp b/lldb/source/Core/StringList.cpp
index 5085c439d0e..cde02e19732 100644
--- a/lldb/source/Core/StringList.cpp
+++ b/lldb/source/Core/StringList.cpp
@@ -103,34 +103,21 @@ void StringList::Join(const char *separator, Stream &strm) {
void StringList::Clear() { m_strings.clear(); }
void StringList::LongestCommonPrefix(std::string &common_prefix) {
- const size_t num_strings = m_strings.size();
-
- if (num_strings == 0) {
- common_prefix.clear();
- } else {
- common_prefix = m_strings.front();
-
- for (size_t idx = 1; idx < num_strings; ++idx) {
- std::string &curr_string = m_strings[idx];
- size_t new_size = curr_string.size();
-
- // First trim common_prefix if it is longer than the current element:
- if (common_prefix.size() > new_size)
- common_prefix.erase(new_size);
-
- // Then trim it at the first disparity:
- for (size_t i = 0; i < common_prefix.size(); i++) {
- if (curr_string[i] != common_prefix[i]) {
- common_prefix.erase(i);
- break;
- }
- }
+ common_prefix.clear();
+ if (m_strings.empty())
+ return;
- // If we've emptied the common prefix, we're done.
- if (common_prefix.empty())
+ auto args = llvm::makeArrayRef(m_strings);
+ llvm::StringRef prefix = args.front();
+ for (auto arg : args.drop_front()) {
+ size_t count = 0;
+ for (count = 0; count < std::min(prefix.size(), arg.size()); ++count) {
+ if (prefix[count] != arg[count])
break;
}
+ prefix = prefix.take_front(count);
}
+ common_prefix = prefix;
}
void StringList::InsertStringAtIndex(size_t idx, const char *str) {
OpenPOWER on IntegriCloud