[Lldb-commits] [lldb] 7a86cc6 - [lldb][NFC] Remove unnecessary std::string temporaries

Felipe de Azevedo Piovezan via lldb-commits lldb-commits at lists.llvm.org
Mon Dec 4 10:24:58 PST 2023


Author: Felipe de Azevedo Piovezan
Date: 2023-12-04T10:23:04-08:00
New Revision: 7a86cc6c4ca11e37d5985d4fc902658ab6ad0e22

URL: https://github.com/llvm/llvm-project/commit/7a86cc6c4ca11e37d5985d4fc902658ab6ad0e22
DIFF: https://github.com/llvm/llvm-project/commit/7a86cc6c4ca11e37d5985d4fc902658ab6ad0e22.diff

LOG: [lldb][NFC] Remove unnecessary std::string temporaries

The existing code was taking three substrings from a regex match and converting
to std::strings prior to using them. This may have been done to address
null-termination concerns, but this is not the case:

1. `name` was being used to call `c_str()` and then implicitly converted back to
a `StringRef` on the call to `ToAddress`. While the path `const char *` ->
`StringRef` requires null-termination, we can simply use the original StringRef.
2. `str_offset` was being converted back to a StringRef in order to call a
member method. Member methods can't handle non-null termination.
3. `sign` simply had it's 0-th element accessed.

Added: 
    

Modified: 
    lldb/source/Interpreter/OptionArgParser.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/source/Interpreter/OptionArgParser.cpp b/lldb/source/Interpreter/OptionArgParser.cpp
index ba2d3416e1838..933bc6514ca24 100644
--- a/lldb/source/Interpreter/OptionArgParser.cpp
+++ b/lldb/source/Interpreter/OptionArgParser.cpp
@@ -243,12 +243,12 @@ OptionArgParser::DoToAddress(const ExecutionContext *exe_ctx, llvm::StringRef s,
     llvm::SmallVector<llvm::StringRef, 4> matches;
     if (g_symbol_plus_offset_regex.Execute(sref, &matches)) {
       uint64_t offset = 0;
-      std::string name = matches[1].str();
-      std::string sign = matches[2].str();
-      std::string str_offset = matches[3].str();
-      if (!llvm::StringRef(str_offset).getAsInteger(0, offset)) {
+      llvm::StringRef name = matches[1];
+      llvm::StringRef sign = matches[2];
+      llvm::StringRef str_offset = matches[3];
+      if (!str_offset.getAsInteger(0, offset)) {
         Status error;
-        addr = ToAddress(exe_ctx, name.c_str(), LLDB_INVALID_ADDRESS, &error);
+        addr = ToAddress(exe_ctx, name, LLDB_INVALID_ADDRESS, &error);
         if (addr != LLDB_INVALID_ADDRESS) {
           if (sign[0] == '+')
             return addr + offset;


        


More information about the lldb-commits mailing list