summaryrefslogtreecommitdiffstats
path: root/loader/pe_image.c
diff options
context:
space:
mode:
authorarpi_esp <arpi_esp@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-03-18 01:01:03 +0000
committerarpi_esp <arpi_esp@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-03-18 01:01:03 +0000
commitd71e31d0f702ebf8f872694f6e0f5d579c8378d3 (patch)
treeb8a816661c678a08769b45d34b394b1b5d04f134 /loader/pe_image.c
parent52d76c5f328bdb0268d266b21f91aac571b443f6 (diff)
downloadmpv-d71e31d0f702ebf8f872694f6e0f5d579c8378d3.tar.bz2
mpv-d71e31d0f702ebf8f872694f6e0f5d579c8378d3.tar.xz
DLL loader updated from avifile-0.60beta4
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@129 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'loader/pe_image.c')
-rw-r--r--loader/pe_image.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/loader/pe_image.c b/loader/pe_image.c
index cc8eef6746..51af59bd0b 100644
--- a/loader/pe_image.c
+++ b/loader/pe_image.c
@@ -670,7 +670,8 @@ HMODULE PE_LoadImage( int handle, LPCSTR filename, WORD *version )
error:
if (unix_handle != -1) close( unix_handle );
- if (load_addr) VirtualFree( (LPVOID)load_addr, 0, MEM_RELEASE );
+ if (load_addr)
+ VirtualFree( (LPVOID)load_addr, 0, MEM_RELEASE );
UnmapViewOfFile( (LPVOID)hModule );
return 0;
}
@@ -870,6 +871,7 @@ void PE_UnloadLibrary(WINE_MODREF *wm)
HeapFree( GetProcessHeap(), 0, wm->filename );
HeapFree( GetProcessHeap(), 0, wm->short_filename );
+ VirtualFree( (LPVOID)wm->module, 0, MEM_RELEASE );
HeapFree( GetProcessHeap(), 0, wm );
}
@@ -884,6 +886,12 @@ void PE_UnloadLibrary(WINE_MODREF *wm)
* DLL_PROCESS_ATTACH. Only new created threads do DLL_THREAD_ATTACH
* (SDK)
*/
+extern void This_Is_Dirty_Hack()
+{
+ void* mem=alloca(0x20000);
+ *(int*)mem=0x1234;
+}
+
WIN_BOOL PE_InitDLL( WINE_MODREF *wm, DWORD type, LPVOID lpReserved )
{
WIN_BOOL retv = TRUE;
@@ -900,23 +908,26 @@ WIN_BOOL PE_InitDLL( WINE_MODREF *wm, DWORD type, LPVOID lpReserved )
TRACE_(relay)("CallTo32(entryproc=%p,module=%08x,type=%ld,res=%p)\n",
entry, wm->module, type, lpReserved );
- printf("Entering DllMain(");
+
+
+ TRACE("Entering DllMain(");
switch(type)
{
case DLL_PROCESS_DETACH:
- printf("DLL_PROCESS_DETACH) ");
+ TRACE("DLL_PROCESS_DETACH) ");
break;
case DLL_PROCESS_ATTACH:
- printf("DLL_PROCESS_ATTACH) ");
+ TRACE("DLL_PROCESS_ATTACH) ");
break;
case DLL_THREAD_DETACH:
- printf("DLL_THREAD_DETACH) ");
+ TRACE("DLL_THREAD_DETACH) ");
break;
case DLL_THREAD_ATTACH:
- printf("DLL_THREAD_ATTACH) ");
+ TRACE("DLL_THREAD_ATTACH) ");
break;
}
- printf("for %s\n", wm->filename);
+ TRACE("for %s\n", wm->filename);
+ This_Is_Dirty_Hack();
retv = entry( wm->module, type, lpReserved );
}