Juan Lang juan_lang@yahoo.com writes:
+static void loadShell32(void) +{
- if (hShell32)
- {
if (pMalloc)
{
pMalloc->lpVtbl->Release(pMalloc);
pMalloc = NULL;
}
/* until it's really unloaded: */
while (FreeLibrary(hShell32))
;
I'm not sure what you are trying to do here, but this causes an infinite loop on XP (and it probably should under Wine too, since the test binary imports shell32). Also some tests fail on XP:
shellpath.c:433: Test failed: SHGetFolderPath returned 0x00000000, expected 0x80070002 shellpath.c:438: Test failed: SHGetFolderLocation returned 0x00000000, expected E_FAIL shellpath.c:442: Test failed: SHGetSpecialFolderPath succeeded, expected failure shellpath.c:447: Test failed: SHGetFolderLocation returned 0x00000000, expected E_FAIL
--- Alexandre Julliard julliard@winehq.org wrote:
+static void loadShell32(void) +{
- if (hShell32)
- {
if (pMalloc)
{
pMalloc->lpVtbl->Release(pMalloc);
pMalloc = NULL;
}
/* until it's really unloaded: */
while (FreeLibrary(hShell32))
;
I'm not sure what you are trying to do here, but this causes an infinite loop on XP (and it probably should under Wine too, since the test binary imports shell32).
Really? Odd, I first wrote this under XP. I'm trying to force shell32 to unload; native shell32 caches values you've already queried and won't reinitialize them till you reload it.
But thanks, I'll test some more. --Juan
_______________________________ Do you Yahoo!? Declare Yourself - Register online to vote today! http://vote.yahoo.com
--- Alexandre Julliard julliard@winehq.org wrote:
+static void loadShell32(void) +{
- if (hShell32)
- {
if (pMalloc)
{
pMalloc->lpVtbl->Release(pMalloc);
pMalloc = NULL;
}
/* until it's really unloaded: */
while (FreeLibrary(hShell32))
;
I'm not sure what you are trying to do here, but this causes an infinite loop on XP (and it probably should under Wine too, since the test binary imports shell32).
I'm unable to reproduce the infinite loop under XP. As far as I can tell this shouldn't produce one, either: since I don't modify the value of hShell32, FreeLibrary should eventually fail when the refcount on the library reaches 0 and the library is actually unloaded.
There are other problems in WinXP that I'm working on (ILFindLastID doesn't appear to be exported by name, for example). If you're sure an infinite loop is the symptom, though, I'll resubmit without this test. (Pity, it was probably the most interesting test.)
--Juan
__________________________________ Do you Yahoo!? Yahoo! Mail Address AutoComplete - You start. We finish. http://promotions.yahoo.com/new_mail
Juan Lang juan_lang@yahoo.com writes:
I'm unable to reproduce the infinite loop under XP. As far as I can tell this shouldn't produce one, either: since I don't modify the value of hShell32, FreeLibrary should eventually fail when the refcount on the library reaches 0 and the library is actually unloaded.
There is no guarantee of that, there are many cases where a dll cannot be unloaded, for instance if it contains TLS data. You'll need to spawn a child process if you want to reliably test the shell32 init code.