Nicolas Le Cam wrote:
/* We have a dll that cannot be found through
LoadLibraryExA. This
* is the case for .NET provided dll's. We will add the
directory
* where the dll resides to the PATH variable when dealing
with
* the tests for this dll.
*/
GetModuleFileNameA(dll, dllpath, MAX_PATH);
*strrchr(dllpath, '\\') = '\0';
wine_tests[nr_of_files].maindllpath =
xmalloc(strlen(dllpath) + 1);
strcpy(wine_tests[nr_of_files].maindllpath, dllpath);
}
This won't work if test needs more than one dll found through LoadLibraryShim
Not sure what you mean as LoadLibraryShim will only return 1 dll.
I mean if the test imports more than one dll that can only be found by LoadLibraryShim it will replace the first PATH you retrieved by the second one, and a message will be displayed for the first d. In my test I did something like that :
else { char dllpath[MAX_PATH]; /* We have a dll that cannot be found through LoadLibraryExA. This * is the case for .NET provided dll's. We will add the directory * where the dll resides to the PATH variable when dealing with * the tests for this dll. */ GetModuleFileNameA(dll, dllpath, MAX_PATH); *strrchr(dllpath, '\\') = '\0'; if (!wine_tests[nr_of_files].maindllpath) wine_tests[nr_of_files].maindllpath = strmake ( NULL,
";%s", dllpath); else { char *newpath = wine_tests[nr_of_files].maindllpath;
wine_tests[nr_of_files].maindllpath = strmake ( NULL,
"%s;%s", newpath, dllpath); free(newpath); } }
and wine_tests[nr_of_files].maindllpath = NULL; wasn't set in extract_test_proc
I still don't get it.
The only dll that we try to load is the main dll. We don't care about all the other imports.