forked from Mirrors/wine-wine
ntdll: Fix the libdl refcount when loading the same builtin twice.
parent
1d6db94ee2
commit
2a1dc15790
|
@ -179,7 +179,7 @@ static void testNestedLoadLibraryA(void)
|
|||
|
||||
/* Try to load the dll again, if refcounting is ok, this should work */
|
||||
hModule1 = LoadLibraryA(path1);
|
||||
todo_wine ok(hModule1 != NULL, "LoadLibrary(%s) failed\n", path1);
|
||||
ok(hModule1 != NULL, "LoadLibrary(%s) failed\n", path1);
|
||||
if (hModule1 != NULL)
|
||||
ok(FreeLibrary(hModule1), "FreeLibrary() failed\n");
|
||||
}
|
||||
|
|
|
@ -1553,7 +1553,11 @@ static NTSTATUS load_builtin_dll( LPCWSTR load_path, LPCWSTR path, HANDLE file,
|
|||
}
|
||||
}
|
||||
|
||||
if (info.status != STATUS_SUCCESS) return info.status;
|
||||
if (info.status != STATUS_SUCCESS)
|
||||
{
|
||||
wine_dll_unload( handle );
|
||||
return info.status;
|
||||
}
|
||||
|
||||
if (!info.wm)
|
||||
{
|
||||
|
@ -1574,6 +1578,7 @@ static NTSTATUS load_builtin_dll( LPCWSTR load_path, LPCWSTR path, HANDLE file,
|
|||
break;
|
||||
}
|
||||
}
|
||||
wine_dll_unload( handle ); /* release the libdl refcount */
|
||||
if (!info.wm) return STATUS_INVALID_IMAGE_FORMAT;
|
||||
if (info.wm->ldr.LoadCount != -1) info.wm->ldr.LoadCount++;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue