Skip to content

Commit

Permalink
SDL_LoadObject on Windows now calls LoadLibrary a second time in its …
Browse files Browse the repository at this point in the history
…EX form whenever the first load fails. This second call uses the "altered" search path for DLL dependencies, which includes searching the directory that the DLL itself lives in.
  • Loading branch information
slouken committed Sep 28, 2013
1 parent b6be143 commit dfa53e7
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions src/loadso/windows/SDL_sysloadso.c
Expand Up @@ -34,6 +34,19 @@ SDL_LoadObject(const char *sofile)
{
LPTSTR tstr = WIN_UTF8ToString(sofile);
void *handle = (void *) LoadLibrary(tstr);

/* By default LoadLibrary uses the current working directory
* as the first item on the search path for implicit dependencies
* of whatever it's loading. That is somewhat inconsistent with
* what dlopen does on other platforms, so we will try again
* with LoadLibraryEx and a slightly different search path. This
* causes Windows to search for dependencies in the directory
* that the module itself lives in. */
if(handle == NULL)
{
handle = (void *) LoadLibraryEx(tstr, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
}

SDL_free(tstr);

/* Generate an error message if all loads failed */
Expand Down

0 comments on commit dfa53e7

Please sign in to comment.