[Bug 20711] Flatout2 demo crashes on exit
wine-bugs at winehq.org
wine-bugs at winehq.org
Sun Mar 28 11:47:17 CDT 2010
http://bugs.winehq.org/show_bug.cgi?id=20711
--- Comment #17 from Markus <mst at collogia.de> 2010-03-28 11:47:16 ---
Hi Wylda,
at the moment I'm quite out of wine development (nothing made for half a year).
But the only solution I see is to implement a pessimistic cleanup solution in
compobj.c to fix an application bug. This would need something like this.
Create a new reference to the loaded (or maybe in between freed library).
Create a new link to the DllCanUnloadNow function of it and call it afterwards.
Additionally we must call a second FreeLibrary() in the same function.
static void apartment_freeunusedlibraries()
...
HANDLE hLibrary;
...
hLibrary = LoadLibraryExW(entry->dll->library_name, 0,
LOAD_WITH_ALTERED_SEARCH_PATH);
if (hLibrary)
{
entry->dll->DllCanUnloadNow =
(void *)GetProcAddress(hLibrary, "DllCanUnloadNow");
}
if (entry->dll->DllCanUnloadNow && (entry->dll->DllCanUnloadNow() == S_OK))
{
...
else if (entry->unload_time)
entry->unload_time = 0;
FreeLibrary(hLibrary);
...
This is only an idea. Maybe someone with deeper insight into compobj.c can give
a statement if that can be a valid solution. In between you could have a test.
A quick and dirty implementation and compilation fixed the error. But I made no
other tests.
Best regards.
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.
More information about the wine-bugs
mailing list