+ std::wstring old_line = getLine();
+ if (m_history_index < m_history.size()) {
+ auto entry = m_history.begin() + m_history_index;
+ if (entry->saved && entry->line == line) {
+ entry->line = *entry->saved;
+ entry->saved = nullopt;
+ // Remove potential duplicates
+ auto dup_before = std::find(m_history.begin(), entry, *entry);
+ if (dup_before != entry)
+ m_history.erase(dup_before);
+ else if (std::find(entry + 1, m_history.end(), *entry) != m_history.end())
+ m_history.erase(entry);
+ }
+ }