Bug #9699 » dln_load.patch
dln.c | ||
---|---|---|
#define translit_separator(str) (void)(str)
|
||
#endif
|
||
#if defined _WIN32 && !defined __CYGWIN__
|
||
static WCHAR *
|
||
mbstr_to_wstr(UINT cp, const char *str)
|
||
{
|
||
WCHAR *ptr;
|
||
int len = MultiByteToWideChar(cp, 0, str, -1, NULL, 0);
|
||
ptr = malloc(sizeof(WCHAR) * len);
|
||
if (!ptr)
|
||
return 0;
|
||
if (!MultiByteToWideChar(cp, 0, str, -1, ptr, len)) {
|
||
free(ptr);
|
||
ptr = 0;
|
||
}
|
||
return ptr;
|
||
}
|
||
#endif
|
||
void*
|
||
dln_load(const char *file)
|
||
{
|
||
... | ... | |
#if defined _WIN32 && !defined __CYGWIN__
|
||
HINSTANCE handle;
|
||
char winfile[MAXPATHLEN];
|
||
WCHAR *winfile;
|
||
char message[1024];
|
||
void (*init_fct)();
|
||
char *buf;
|
||
... | ... | |
/* Load the file as an object one */
|
||
init_funcname(&buf, file);
|
||
strlcpy(winfile, file, sizeof(winfile));
|
||
handle = 0;
|
||
/* Convert the file path to wide char */
|
||
winfile = mbstr_to_wstr(CP_UTF8, file);
|
||
if (winfile) {
|
||
/* Load the library */
|
||
handle = LoadLibraryW(winfile);
|
||
free(winfile);
|
||
}
|
||
/* Load file */
|
||
if ((handle = LoadLibrary(winfile)) == NULL) {
|
||
/* Handle failure */
|
||
if (!handle) {
|
||
error = dln_strerror();
|
||
goto failed;
|
||
}
|
- « Previous
- 1
- 2
- Next »