X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=lib%2F3rdparty%2Fmingw%2Fcrtdll.c;h=001cbd7358f4d1e5dfa78c4842f21aba5834c0b1;hp=f930f0d6a5afa67c464e7ab87d6c0ba6f6f370f0;hb=b726d7355f0aa394852fa8c56e59cfc9bbc4293c;hpb=9ab4e6808d239977bcba0066e3ca3a64bec5d64b diff --git a/lib/3rdparty/mingw/crtdll.c b/lib/3rdparty/mingw/crtdll.c index f930f0d6a5a..001cbd7358f 100644 --- a/lib/3rdparty/mingw/crtdll.c +++ b/lib/3rdparty/mingw/crtdll.c @@ -179,34 +179,34 @@ __DllMainCRTStartup (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) retcode = FALSE; goto i__leave; } + _pei386_runtime_relocator (); if (dwReason == DLL_PROCESS_ATTACH || dwReason == DLL_THREAD_ATTACH) { + retcode = _CRT_INIT (hDllHandle, dwReason, lpreserved); + if (!retcode) + goto i__leave; retcode = DllEntryPoint (hDllHandle, dwReason, lpreserved); - if (retcode) - retcode = _CRT_INIT (hDllHandle, dwReason, lpreserved); if (! retcode) - goto i__leave; + { + if (dwReason == DLL_PROCESS_ATTACH) + _CRT_INIT (hDllHandle, DLL_PROCESS_DETACH, lpreserved); + goto i__leave; + } } - _pei386_runtime_relocator (); - if (retcode && dwReason == DLL_PROCESS_ATTACH) + if (dwReason == DLL_PROCESS_ATTACH) __main (); retcode = DllMain(hDllHandle,dwReason,lpreserved); - if ((dwReason == DLL_PROCESS_ATTACH) && ! retcode) + if (dwReason == DLL_PROCESS_ATTACH && ! retcode) { DllMain (hDllHandle, DLL_PROCESS_DETACH, lpreserved); - _CRT_INIT (hDllHandle, DLL_PROCESS_DETACH, lpreserved); DllEntryPoint (hDllHandle, DLL_PROCESS_DETACH, lpreserved); + _CRT_INIT (hDllHandle, DLL_PROCESS_DETACH, lpreserved); } if (dwReason == DLL_PROCESS_DETACH || dwReason == DLL_THREAD_DETACH) { + retcode = DllEntryPoint (hDllHandle, dwReason, lpreserved); if (_CRT_INIT (hDllHandle, dwReason, lpreserved) == FALSE) - { - retcode = FALSE; - } - if (retcode) - { - retcode = DllEntryPoint (hDllHandle, dwReason, lpreserved); - } + retcode = FALSE; } i__leave: __native_dllmain_reason = UINT_MAX;