diff --git a/loader/module.c b/loader/module.c index eae2b371ec5..ebbceacdd26 100644 --- a/loader/module.c +++ b/loader/module.c @@ -864,6 +864,10 @@ HINSTANCE WINAPI LoadModule( LPCSTR name, LPVOID paramBlock ) pdb = PROCESS_IdToPDB( info.dwProcessId ); tdb = pdb? (TDB *)GlobalLock16( pdb->task ) : NULL; hInstance = tdb && tdb->hInstance? tdb->hInstance : pdb? pdb->task : 0; + /* If there is no hInstance (32-bit process) return a dummy value + * that must be > 31 + * FIXME: should do this in all cases and fix Win16 callers */ + if (!hInstance) hInstance = 33; /* Close off the handles */ CloseHandle( info.hThread ); diff --git a/loader/task.c b/loader/task.c index 7f3d025509b..3867770ddb2 100644 --- a/loader/task.c +++ b/loader/task.c @@ -411,7 +411,7 @@ BOOL TASK_Create( THDB *thdb, NE_MODULE *pModule, HINSTANCE16 hInstance, pTask->thdb->teb.htask16 = pTask->thdb->process->task = hTask; TRACE_(task)("module='%s' cmdline='%s' task=%04x\n", name, cmd_line, hTask ); - if (pTask->flags & TDBF_WIN32) return; + if (pTask->flags & TDBF_WIN32) return TRUE; /* If we have a DGROUP/hInstance, use it for 16-bit stack */