[kernel] fix the AUTOUNSIGNAL path on kernel events to wait until a thread waits on the event
in the case of it being signalled when there is no waiters pending.
diff --git a/kernel/event.c b/kernel/event.c
index bd71e75..188b5d3 100644
--- a/kernel/event.c
+++ b/kernel/event.c
@@ -101,11 +101,11 @@
 	if (!e->signalled) {
 		e->signalled = true;
 		if (e->flags & EVENT_FLAG_AUTOUNSIGNAL) {
-			/* release one thread and unsignal again */
-			wait_queue_wake_one(&e->wait, reschedule, NO_ERROR);
-			e->signalled = false;
+			/* try to release one thread and unsignal again if successful */
+			if (wait_queue_wake_one(&e->wait, reschedule, NO_ERROR) > 0)
+				e->signalled = false;
 		} else {
-			/* relase all threads and remain signalled */
+			/* release all threads and remain signalled */
 			wait_queue_wake_all(&e->wait, reschedule, NO_ERROR);
 		}
 	}