Don't create thunk for task signal proc, call it directly.

diff --git a/loader/task.c b/loader/task.c
index e3697e7..5ae567c 100644
--- a/loader/task.c
+++ b/loader/task.c
@@ -467,10 +467,7 @@
 
     /* Perform USER cleanup */
 
-    if (pTask->userhandler)
-        pTask->userhandler( hTask, USIG16_TERMINATION, 0,
-                            pTask->hInstance, pTask->hQueue );
-
+    TASK_CallTaskSignalProc( USIG16_TERMINATION, hTask );
     PROCESS_CallUserSignalProc( USIG_PROCESS_EXIT, 0 );
     PROCESS_CallUserSignalProc( USIG_THREAD_EXIT, 0 );     /* FIXME */
     PROCESS_CallUserSignalProc( USIG_PROCESS_DESTROY, 0 );
@@ -1447,8 +1444,6 @@
 
 /***********************************************************************
  *           SetTaskSignalProc   (KERNEL.38)
- *
- * Real 16-bit interface is provided by the THUNK_SetTaskSignalProc.
  */
 FARPROC16 WINAPI SetTaskSignalProc( HTASK16 hTask, FARPROC16 proc )
 {
@@ -1457,11 +1452,26 @@
 
     if (!hTask) hTask = GetCurrentTask();
     if (!(pTask = (TDB *)GlobalLock16( hTask ))) return NULL;
-    oldProc = (FARPROC16)pTask->userhandler;
-    pTask->userhandler = (USERSIGNALPROC)proc;
+    oldProc = pTask->userhandler;
+    pTask->userhandler = proc;
     return oldProc;
 }
 
+/***********************************************************************
+ *           TASK_CallTaskSignalProc
+ */
+/* ### start build ### */
+extern WORD CALLBACK TASK_CallTo16_word_wwwww(FARPROC16,WORD,WORD,WORD,WORD,WORD);
+/* ### stop build ### */
+void TASK_CallTaskSignalProc( UINT16 uCode, HANDLE16 hTaskOrModule )
+{
+    TDB *pTask = (TDB *)GlobalLock16( GetCurrentTask() );
+    if ( !pTask || !pTask->userhandler ) return;
+
+    TASK_CallTo16_word_wwwww( pTask->userhandler, 
+                              hTaskOrModule, uCode, 0, 
+                              pTask->hInstance, pTask->hQueue );
+}
 
 /***********************************************************************
  *           SetSigHandler   (KERNEL.140)