Bugfix: Always release the Win16Lock in TASK_Reschedule.

diff --git a/loader/task.c b/loader/task.c
index 5624bd1..75dd7bf 100644
--- a/loader/task.c
+++ b/loader/task.c
@@ -780,8 +780,13 @@
 
     if (hTask == hCurrentTask) 
     {
-       TRACE(task, "returning to the current task(%04x)\n", hTask );
-       return FALSE;  /* Nothing to do */
+        /* Allow Win32 threads to thunk down even while a Win16 task is
+           in a tight PeekMessage() or Yield() loop ... */
+        SYSLEVEL_ReleaseWin16Lock();
+        SYSLEVEL_RestoreWin16Lock();
+
+        TRACE(task, "returning to the current task(%04x)\n", hTask );
+        return FALSE;  /* Nothing to do */
     }
     pNewTask = (TDB *)GlobalLock16( hTask );
     TRACE(task, "Switching to task %04x (%.8s)\n",