undo_database.cpp: Handle unimplemented upd+del case
This commit is contained in:
parent
44db4760a1
commit
c2943ee3bb
1 changed files with 12 additions and 0 deletions
|
|
@ -183,6 +183,8 @@ void undo_database::merge()
|
||||||
// upd(was=X) + upd(was=Y) -> upd(was=X), type A
|
// upd(was=X) + upd(was=Y) -> upd(was=X), type A
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
// del+upd -> N/A
|
||||||
|
assert( prev_state.removed.find(obj.second->id) == prev_state.removed.end() );
|
||||||
// nop+upd(was=Y) -> upd(was=Y), type B
|
// nop+upd(was=Y) -> upd(was=Y), type B
|
||||||
prev_state.old_values[obj.second->id] = std::move(obj.second);
|
prev_state.old_values[obj.second->id] = std::move(obj.second);
|
||||||
}
|
}
|
||||||
|
|
@ -217,6 +219,16 @@ void undo_database::merge()
|
||||||
prev_state.new_ids.erase(obj.second->id);
|
prev_state.new_ids.erase(obj.second->id);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
auto it = prev_state.old_values.find(obj.second->id);
|
||||||
|
if( it != prev_state.old_values.end() )
|
||||||
|
{
|
||||||
|
// upd(was=X) + del(was=Y) -> del(was=X)
|
||||||
|
prev_state.removed[obj.second->id] = std::move(it->second);
|
||||||
|
prev_state.old_values.erase(obj.second->id);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// del + del -> N/A
|
||||||
|
assert( prev_state.removed.find( obj.second->id ) == prev_state.removed.end() );
|
||||||
// nop + del(was=Y) -> del(was=Y)
|
// nop + del(was=Y) -> del(was=Y)
|
||||||
prev_state.removed[obj.second->id] = std::move(obj.second);
|
prev_state.removed[obj.second->id] = std::move(obj.second);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue