Mercurial > pidgin.yaz
comparison libpurple/win32/win32dep.c @ 30897:7be961ff3fa2
Make wpurple_find_and_loadproc() work for non-ASCII full paths
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Tue, 31 Aug 2010 00:51:41 +0000 |
parents | 10ea601e6502 |
children | 31c2dd632ffa |
comparison
equal
deleted
inserted
replaced
30894:ae954cc1abb5 | 30897:7be961ff3fa2 |
---|---|
75 FARPROC wpurple_find_and_loadproc(const char *dllname, const char *procedure) { | 75 FARPROC wpurple_find_and_loadproc(const char *dllname, const char *procedure) { |
76 HMODULE hmod; | 76 HMODULE hmod; |
77 BOOL did_load = FALSE; | 77 BOOL did_load = FALSE; |
78 FARPROC proc = 0; | 78 FARPROC proc = 0; |
79 | 79 |
80 if(!(hmod = GetModuleHandle(dllname))) { | 80 wchar_t *wc_dllname = g_utf8_to_utf16(dllname, -1, NULL, NULL, NULL); |
81 | |
82 if(!(hmod = GetModuleHandleW(wc_dllname))) { | |
81 purple_debug_warning("wpurple", "%s not already loaded; loading it...\n", dllname); | 83 purple_debug_warning("wpurple", "%s not already loaded; loading it...\n", dllname); |
82 if(!(hmod = LoadLibrary(dllname))) { | 84 if(!(hmod = LoadLibraryW(wc_dllname))) { |
83 purple_debug_error("wpurple", "Could not load: %s\n", dllname); | 85 purple_debug_error("wpurple", "Could not load: %s\n", dllname); |
86 g_free(wc_dllname); | |
84 return NULL; | 87 return NULL; |
85 } | 88 } |
86 else | 89 else |
87 did_load = TRUE; | 90 did_load = TRUE; |
88 } | 91 } |
92 | |
93 g_free(wc_dllname); | |
94 wc_dllname = NULL; | |
89 | 95 |
90 if((proc = GetProcAddress(hmod, procedure))) { | 96 if((proc = GetProcAddress(hmod, procedure))) { |
91 purple_debug_info("wpurple", "This version of %s contains %s\n", | 97 purple_debug_info("wpurple", "This version of %s contains %s\n", |
92 dllname, procedure); | 98 dllname, procedure); |
93 return proc; | 99 return proc; |