[Lldb-commits] [lldb] r367936 - [lldb][NFC] Document and refactor ClangPersistentVariables::RemovePersistentVariable

Raphael Isemann via lldb-commits lldb-commits at lists.llvm.org
Mon Aug 5 14:43:53 PDT 2019


Author: teemperor
Date: Mon Aug  5 14:43:53 2019
New Revision: 367936

URL: http://llvm.org/viewvc/llvm-project?rev=367936&view=rev
Log:
[lldb][NFC] Document and refactor ClangPersistentVariables::RemovePersistentVariable

Modified:
    lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangPersistentVariables.cpp

Modified: lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangPersistentVariables.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangPersistentVariables.cpp?rev=367936&r1=367935&r2=367936&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangPersistentVariables.cpp (original)
+++ lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangPersistentVariables.cpp Mon Aug  5 14:43:53 2019
@@ -42,13 +42,25 @@ void ClangPersistentVariables::RemovePer
     lldb::ExpressionVariableSP variable) {
   RemoveVariable(variable);
 
-  const char *name = variable->GetName().AsCString();
+  // Check if the removed variable was the last one that was created. If yes,
+  // reuse the variable id for the next variable.
 
-  if (*name != '$')
+  // Nothing to do if we have not assigned a variable id so far.
+  if (m_next_persistent_variable_id == 0)
     return;
-  name++;
 
-  if (strtoul(name, nullptr, 0) == m_next_persistent_variable_id - 1)
+  llvm::StringRef name = variable->GetName().GetStringRef();
+  // Remove the prefix from the variable that only the indes is left.
+  if (!name.consume_front(GetPersistentVariablePrefix(false)))
+    return;
+
+  // Check if the variable contained a variable id.
+  uint32_t variable_id;
+  if (name.getAsInteger(10, variable_id))
+    return;
+  // If it's the most recent variable id that was assigned, make sure that this
+  // variable id will be used for the next persistent variable.
+  if (variable_id == m_next_persistent_variable_id - 1)
     m_next_persistent_variable_id--;
 }
 




More information about the lldb-commits mailing list