Skip to content
Permalink
Browse files

[lldb][NFC] Document and refactor ClangPersistentVariables::RemovePer…

…sistentVariable

llvm-svn: 367936
  • Loading branch information
Teemperor committed Aug 5, 2019
1 parent 5c3cdef commit 9de71690536d44d9a29a1fc1d9eea3bcb4eaf754
Showing with 16 additions and 4 deletions.
  1. +16 −4 lldb/source/Plugins/ExpressionParser/Clang/ClangPersistentVariables.cpp
@@ -42,13 +42,25 @@ void ClangPersistentVariables::RemovePersistentVariable(
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--;
}

0 comments on commit 9de7169

Please sign in to comment.
You can’t perform that action at this time.