From: martin-s Date: Sat, 9 Jan 2010 23:04:08 +0000 (+0000) Subject: Fix:Core:Better win32 module loading X-Git-Url: http://git.maemo.org/git/?p=navit-package;a=commitdiff_plain;h=03de33f1ee5b9b2d8a4126a92580ecb1d0ed2b2f Fix:Core:Better win32 module loading git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk/navit@2903 ffa7fe5e-494d-0410-b361-a75ebd5db220 --- diff --git a/navit/plugin.c b/navit/plugin.c index cc7011b..3080ba2 100644 --- a/navit/plugin.c +++ b/navit/plugin.c @@ -51,6 +51,9 @@ g_module_supported(void) #ifdef HAVE_API_WIN32_BASE +static DWORD last_error; +static char errormsg[64]; + static void * g_module_open(char *name, int flags) { @@ -59,29 +62,33 @@ g_module_open(char *name, int flags) wchar_t filename[len]; MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, name, -1, filename, len) ; - dbg(0,"%s\n",name); handle = LoadLibraryW (filename); - dbg(0,"handle=%p\n",handle); - dbg(0,"%d\n",GetLastError ()); + if (!handle) + last_error=GetLastError(); return handle; } static char * g_module_error(void) { - return NULL; + sprintf(errormsg,"dll error %d",(int)last_error); + return errormsg; } static int g_module_symbol(GModule *handle, char *symbol, gpointer *addr) { *addr=GetProcAddress ((HANDLE)handle, symbol); - return (*addr != NULL); + if (*addr) + return 1; + last_error=GetLastError(); + return 0; } static void g_module_close(GModule *handle) { + FreeLibrary((HANDLE)handle); } #else