From f825016e6792728ac4416b372e085bfc5b9ea2d0 Mon Sep 17 00:00:00 2001
From: Davide Mor <davide.mor@skywarder.eu>
Date: Sat, 17 May 2025 15:17:49 +0200
Subject: [PATCH] [wiz5500] Extra caution measure for waitForINTn

---
 src/shared/drivers/WIZ5500/WIZ5500.cpp | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/shared/drivers/WIZ5500/WIZ5500.cpp b/src/shared/drivers/WIZ5500/WIZ5500.cpp
index d3a9a38f3..afc31070e 100644
--- a/src/shared/drivers/WIZ5500/WIZ5500.cpp
+++ b/src/shared/drivers/WIZ5500/WIZ5500.cpp
@@ -135,8 +135,6 @@ void Wiz5500::handleINTn()
         {
             miosix::Scheduler::IRQfindNextThread();
         }
-
-        intn_thread = nullptr;
     }
 }
 
@@ -445,7 +443,9 @@ TimedWaitResult Wiz5500::waitForINTn(Lock<FastMutex>& l, long long until)
 
     Unlock<FastMutex> ul(l);
     FastInterruptDisableLock il;
+
     intn_thread = Thread::IRQgetCurrentThread();
+
     while (intn.value() != 0 && result == TimedWaitResult::NoTimeout)
     {
         long long now = getTime();
@@ -460,6 +460,10 @@ TimedWaitResult Wiz5500::waitForINTn(Lock<FastMutex>& l, long long until)
             result = Thread::IRQenableIrqAndTimedWait(il, until);
         }
     }
+
+    // Set the thread pointer to null just to make sure
+    intn_thread = nullptr;
+
     return result;
 }
 
-- 
GitLab