gem5: fix some iterator use and erase bugs

This commit is contained in:
Ali Saidi
2012-05-10 18:04:27 -05:00
parent 5ecaf30219
commit 4f66bcdd2e
2 changed files with 13 additions and 6 deletions

View File

@@ -56,13 +56,18 @@ PCEventQueue::remove(PCEvent *event)
{
int removed = 0;
range_t range = equal_range(event);
for (iterator i = range.first; i != range.second; ++i) {
iterator i = range.first;
while (i != range.second &&
i != pc_map.end()) {
if (*i == event) {
DPRINTF(PCEvent, "PC based event removed at %#x: %s\n",
event->pc(), event->descr());
pc_map.erase(i);
i = pc_map.erase(i);
++removed;
} else {
i++;
}
}
return removed > 0;