From 574ef76b9f9909ec2dac6b80a2c279f93407336e Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Sat, 3 Apr 1999 16:23:47 +0000 Subject: [PATCH] Added some SetLastError()s in GetProcAddress() and LoadLibrary(). --- loader/module.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/loader/module.c b/loader/module.c index dfa371949a..59a15f38de 100644 --- a/loader/module.c +++ b/loader/module.c @@ -1179,6 +1179,11 @@ HMODULE WINAPI LoadLibraryEx32W16( LPCSTR libname, HANDLE16 hf, HMODULE WINAPI LoadLibraryExA(LPCSTR libname,HFILE hfile,DWORD flags) { HMODULE hmod; + + if (!libname) { + SetLastError(ERROR_INVALID_PARAMETER); + return 0; + } hmod = MODULE_LoadLibraryExA( libname, hfile, flags ); if ( hmod >= 32 ) @@ -1188,6 +1193,7 @@ HMODULE WINAPI LoadLibraryExA(LPCSTR libname,HFILE hfile,DWORD flags) /* Initialize DLL just loaded */ MODULE_InitializeDLLs( hmod, DLL_PROCESS_ATTACH, NULL ); + /* FIXME: check for failure, SLE(ERROR_DLL_INIT_FAILED) */ } return hmod; @@ -1365,21 +1371,29 @@ FARPROC MODULE_GetProcAddress( BOOL snoop ) { WINE_MODREF *wm = MODULE32_LookupHMODULE( hModule ); + FARPROC retproc; if (HIWORD(function)) TRACE(win32,"(%08lx,%s)\n",(DWORD)hModule,function); else TRACE(win32,"(%08lx,%p)\n",(DWORD)hModule,function); - if (!wm) + if (!wm) { + SetLastError(ERROR_INVALID_HANDLE); return (FARPROC)0; + } switch (wm->type) { case MODULE32_PE: - return PE_FindExportedFunction( wm, function, snoop ); + retproc = PE_FindExportedFunction( wm, function, snoop ); + if (!retproc) SetLastError(ERROR_PROC_NOT_FOUND); + return retproc; case MODULE32_ELF: - return ELF_FindExportedFunction( wm, function); + retproc = ELF_FindExportedFunction( wm, function); + if (!retproc) SetLastError(ERROR_PROC_NOT_FOUND); + return retproc; default: ERR(module,"wine_modref type %d not handled.\n",wm->type); + SetLastError(ERROR_INVALID_HANDLE); return (FARPROC)0; } } -- 2.32.0.93.g670b81a890