From 2d7f202530d892e0cb1544f5b24f43d08bd75b8e Mon Sep 17 00:00:00 2001 From: folkert van heusden Date: Sat, 11 Jun 2022 08:47:24 +0200 Subject: [PATCH] use of iterate after erase --- cpu.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/cpu.cpp b/cpu.cpp index f18fe8e..3265be8 100644 --- a/cpu.cpp +++ b/cpu.cpp @@ -258,13 +258,15 @@ bool cpu::check_queued_interrupts() auto interrupts = queued_interrupts.find(i); if (interrupts->second.empty() == false) { - auto vector = interrupts->second.begin(); + auto vector = interrupts->second.begin(); + + uint8_t v = *vector; interrupts->second.erase(vector); - D(fprintf(stderr, "Invoking interrupt vector %o (IPL %d, current: %d)\n", *vector, i, current_level);) + D(fprintf(stderr, "Invoking interrupt vector %o (IPL %d, current: %d)\n", v, i, current_level);) - trap(*vector, i); + trap(v, i); return true; }