On NE process creation, move major part of NE EXE module loading and
NE instance creation into the child process.
diff --git a/loader/task.c b/loader/task.c
index 9ff7fed..c176e3e 100644
--- a/loader/task.c
+++ b/loader/task.c
@@ -275,16 +275,13 @@
* by entering the Win16Lock while linking the task into the
* global task list.
*/
-BOOL TASK_Create( NE_MODULE *pModule, HINSTANCE16 hInstance,
- HINSTANCE16 hPrevInstance, UINT16 cmdShow)
+BOOL TASK_Create( NE_MODULE *pModule, UINT16 cmdShow)
{
HTASK16 hTask;
TDB *pTask;
LPSTR cmd_line;
- WORD sp;
char name[10];
PDB *pdb32 = PROCESS_Current();
- SEGTABLEENTRY *pSegTable = NE_SEG_TABLE( pModule );
/* Allocate the task structure */
@@ -304,9 +301,12 @@
if (pModule->lpDosTask)
pTask->flags |= TDBF_WINOLDAP;
+ pTask->hInstance = pModule->self;
+ pTask->hPrevInstance = 0;
+ /* NOTE: for 16-bit tasks, the instance handles are updated later on
+ in NE_InitProcess */
+
pTask->version = pModule->expected_version;
- pTask->hInstance = hInstance? hInstance : pModule->self;
- pTask->hPrevInstance = hPrevInstance;
pTask->hModule = pModule->self;
pTask->hParent = GetCurrentTask();
pTask->magic = TDB_MAGIC;
@@ -388,16 +388,6 @@
pTask->teb->htask16 = pTask->teb->process->task = hTask;
TRACE_(task)("module='%s' cmdline='%s' task=%04x\n", name, cmd_line, hTask );
- /* If we have a DGROUP/hInstance, use it for 16-bit stack */
-
- if ( hInstance )
- {
- if (!(sp = pModule->sp))
- sp = pSegTable[pModule->ss-1].minsize + pModule->stack_size;
- sp &= ~1; sp -= sizeof(STACK16FRAME);
- pTask->teb->cur_stack = PTR_SEG_OFF_TO_SEGPTR( hInstance, sp );
- }
-
/* If requested, add entry point breakpoint */
if ( TASK_AddTaskEntryBreakpoint )