summaryrefslogtreecommitdiff
path: root/navit/plugin.c
diff options
context:
space:
mode:
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2010-01-09 23:04:08 +0000
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2010-01-09 23:04:08 +0000
commit46a8a89197be07a504619aaf8424388eed9c52a6 (patch)
treece1fda2849623448fa3777b617fc599d160af383 /navit/plugin.c
parent29759efebf48ee551b563f97494e2494e14f48ce (diff)
downloadnavit-46a8a89197be07a504619aaf8424388eed9c52a6.tar.gz
Fix:Core:Better win32 module loading
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@2903 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/plugin.c')
-rw-r--r--navit/plugin.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/navit/plugin.c b/navit/plugin.c
index cc7011bd8..3080ba22f 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