Set low-order bit of module handle for LOAD_LIBRARY_AS_DATAFILE. Cleaned up a few HMODULE/HMODULE16 mismatches.
diff --git a/scheduler/process.c b/scheduler/process.c index 74e2f3e..3f8b12f 100644 --- a/scheduler/process.c +++ b/scheduler/process.c
@@ -180,12 +180,14 @@ * USIG_FLAGS_FAULT * The signal is being sent due to a fault. */ -void PROCESS_CallUserSignalProc( UINT uCode, HMODULE hModule ) +void PROCESS_CallUserSignalProc( UINT uCode, HMODULE16 hModule ) { DWORD flags = current_process.flags; DWORD startup_flags = current_startupinfo.dwFlags; DWORD dwFlags = 0; + if (!Callout.UserSignalProc) return; + /* Determine dwFlags */ if ( !(flags & PDB32_WIN16_PROC) ) dwFlags |= USIG_FLAGS_WIN32; @@ -205,20 +207,12 @@ dwFlags |= USIG_FLAGS_FEEDBACK; } - /* Convert module handle to 16-bit */ - - if ( HIWORD( hModule ) ) - hModule = MapHModuleLS( hModule ); - /* Call USER signal proc */ - if ( Callout.UserSignalProc ) - { - if ( uCode == USIG_THREAD_INIT || uCode == USIG_THREAD_EXIT ) - Callout.UserSignalProc( uCode, GetCurrentThreadId(), dwFlags, hModule ); - else - Callout.UserSignalProc( uCode, GetCurrentProcessId(), dwFlags, hModule ); - } + if ( uCode == USIG_THREAD_INIT || uCode == USIG_THREAD_EXIT ) + Callout.UserSignalProc( uCode, GetCurrentThreadId(), dwFlags, hModule ); + else + Callout.UserSignalProc( uCode, GetCurrentProcessId(), dwFlags, hModule ); }