diff options
Diffstat (limited to 'contrib/llvm/tools/lldb/source/Host/common/ThisThread.cpp')
-rw-r--r-- | contrib/llvm/tools/lldb/source/Host/common/ThisThread.cpp | 58 |
1 files changed, 28 insertions, 30 deletions
diff --git a/contrib/llvm/tools/lldb/source/Host/common/ThisThread.cpp b/contrib/llvm/tools/lldb/source/Host/common/ThisThread.cpp index 7637014..b3f9ede 100644 --- a/contrib/llvm/tools/lldb/source/Host/common/ThisThread.cpp +++ b/contrib/llvm/tools/lldb/source/Host/common/ThisThread.cpp @@ -7,9 +7,9 @@ // //===----------------------------------------------------------------------===// +#include "lldb/Host/ThisThread.h" #include "lldb/Core/Error.h" #include "lldb/Host/HostInfo.h" -#include "lldb/Host/ThisThread.h" #include "llvm/ADT/STLExtras.h" @@ -18,35 +18,33 @@ using namespace lldb; using namespace lldb_private; -void -ThisThread::SetName(llvm::StringRef name, int max_length) -{ - std::string truncated_name(name.data()); - - // Thread names are coming in like '<lldb.comm.debugger.edit>' and - // '<lldb.comm.debugger.editline>'. So just chopping the end of the string - // off leads to a lot of similar named threads. Go through the thread name - // and search for the last dot and use that. - - if (max_length > 0 && truncated_name.length() > static_cast<size_t>(max_length)) - { - // First see if we can get lucky by removing any initial or final braces. - std::string::size_type begin = truncated_name.find_first_not_of("(<"); - std::string::size_type end = truncated_name.find_last_not_of(")>."); - if (end - begin > static_cast<size_t>(max_length)) - { - // We're still too long. Since this is a dotted component, use everything after the last - // dot, up to a maximum of |length| characters. - std::string::size_type last_dot = truncated_name.rfind('.'); - if (last_dot != std::string::npos) - begin = last_dot + 1; - - end = std::min(end, begin + max_length); - } - - std::string::size_type count = end - begin + 1; - truncated_name = truncated_name.substr(begin, count); +void ThisThread::SetName(llvm::StringRef name, int max_length) { + std::string truncated_name(name.data()); + + // Thread names are coming in like '<lldb.comm.debugger.edit>' and + // '<lldb.comm.debugger.editline>'. So just chopping the end of the string + // off leads to a lot of similar named threads. Go through the thread name + // and search for the last dot and use that. + + if (max_length > 0 && + truncated_name.length() > static_cast<size_t>(max_length)) { + // First see if we can get lucky by removing any initial or final braces. + std::string::size_type begin = truncated_name.find_first_not_of("(<"); + std::string::size_type end = truncated_name.find_last_not_of(")>."); + if (end - begin > static_cast<size_t>(max_length)) { + // We're still too long. Since this is a dotted component, use everything + // after the last + // dot, up to a maximum of |length| characters. + std::string::size_type last_dot = truncated_name.rfind('.'); + if (last_dot != std::string::npos) + begin = last_dot + 1; + + end = std::min(end, begin + max_length); } - SetName(truncated_name.c_str()); + std::string::size_type count = end - begin + 1; + truncated_name = truncated_name.substr(begin, count); + } + + SetName(truncated_name); } |