Make wpurple_find_and_loadproc() work for non-ASCII full paths

Tue, 31 Aug 2010 00:51:41 +0000

author
Daniel Atallah <datallah@pidgin.im>
date
Tue, 31 Aug 2010 00:51:41 +0000
changeset 30736
7e21295c7a91
parent 30735
f023bb170d22
child 30737
e64a1b3a9dd4

Make wpurple_find_and_loadproc() work for non-ASCII full paths

libpurple/win32/win32dep.c file | annotate | diff | comparison | revisions
--- a/libpurple/win32/win32dep.c	Mon Aug 30 18:57:22 2010 +0000
+++ b/libpurple/win32/win32dep.c	Tue Aug 31 00:51:41 2010 +0000
@@ -77,16 +77,22 @@
 	BOOL did_load = FALSE;
 	FARPROC proc = 0;
 
-	if(!(hmod = GetModuleHandle(dllname))) {
+	wchar_t *wc_dllname = g_utf8_to_utf16(dllname, -1, NULL, NULL, NULL);
+
+	if(!(hmod = GetModuleHandleW(wc_dllname))) {
 		purple_debug_warning("wpurple", "%s not already loaded; loading it...\n", dllname);
-		if(!(hmod = LoadLibrary(dllname))) {
+		if(!(hmod = LoadLibraryW(wc_dllname))) {
 			purple_debug_error("wpurple", "Could not load: %s\n", dllname);
+			g_free(wc_dllname);
 			return NULL;
 		}
 		else
 			did_load = TRUE;
 	}
 
+	g_free(wc_dllname);
+	wc_dllname = NULL;
+
 	if((proc = GetProcAddress(hmod, procedure))) {
 		purple_debug_info("wpurple", "This version of %s contains %s\n",
 			dllname, procedure);

mercurial