[programs/winetest] Extend PATH if we have dll's that only come with .NET (Try2)

Nicolas Le Cam niko.lecam at gmail.com
Wed Feb 25 05:23:56 CST 2009


2009/2/25 Paul Vriens <paul.vriens.wine at gmail.com>:
> 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.
>
> --
> Cheers,
>
> Paul.
>

Now I get it.
I thought we were trying to resolve every imports. Seems that I didn't
understand the first part of extract_test_proc as I should.
Sorry, I was mistaken.

-- 
Nicolas Le Cam



More information about the wine-devel mailing list