[lldb][NFC] Document and refactor ClangPersistentVariables::RemovePersistentVariable
llvm-svn: 367936
This commit is contained in:
parent
5c3cdef84b
commit
9de7169053
|
@ -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--;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue