Fixed race between Win16 parent and child for first rescheduling of child process. This fixes WinExec returning too early.
diff --git a/loader/task.c b/loader/task.c index 118696b..69bdc8c 100644 --- a/loader/task.c +++ b/loader/task.c
@@ -228,8 +228,11 @@ SEGTABLEENTRY *pSegTable = NE_SEG_TABLE( pModule ); CONTEXT86 context; - /* Add task to 16-bit scheduler pool */ - TASK_Reschedule(); + SYSLEVEL_EnterWin16Lock(); + + /* Add task to 16-bit scheduler pool if necessary */ + if ( hCurrentTask != GetCurrentTask() ) + TASK_Reschedule(); /* Registers at initialization must be: * ax zero