* Reorganize dll entry and C runtime initialization. By Kai Tietz.
svn path=/trunk/; revision=51504
goto i__leave;
}
_pei386_runtime_relocator ();
goto i__leave;
}
_pei386_runtime_relocator ();
- if (retcode && dwReason == DLL_PROCESS_ATTACH)
- __main ();
if (dwReason == DLL_PROCESS_ATTACH || dwReason == DLL_THREAD_ATTACH)
{
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);
retcode = DllEntryPoint (hDllHandle, dwReason, lpreserved);
- if (retcode)
- retcode = _CRT_INIT (hDllHandle, dwReason, lpreserved);
+ {
+ if (dwReason == DLL_PROCESS_ATTACH)
+ _CRT_INIT (hDllHandle, DLL_PROCESS_DETACH, lpreserved);
+ goto i__leave;
+ }
+ if (dwReason == DLL_PROCESS_ATTACH)
+ __main ();
retcode = DllMain(hDllHandle,dwReason,lpreserved);
retcode = DllMain(hDllHandle,dwReason,lpreserved);
- if ((dwReason == DLL_PROCESS_ATTACH) && ! retcode)
+ if (dwReason == DLL_PROCESS_ATTACH && ! retcode)
{
DllMain (hDllHandle, DLL_PROCESS_DETACH, lpreserved);
{
DllMain (hDllHandle, DLL_PROCESS_DETACH, lpreserved);
- _CRT_INIT (hDllHandle, DLL_PROCESS_DETACH, lpreserved);
DllEntryPoint (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)
{
}
if (dwReason == DLL_PROCESS_DETACH || dwReason == DLL_THREAD_DETACH)
{
+ retcode = DllEntryPoint (hDllHandle, dwReason, lpreserved);
if (_CRT_INIT (hDllHandle, dwReason, lpreserved) == FALSE)
if (_CRT_INIT (hDllHandle, dwReason, lpreserved) == FALSE)
- {
- retcode = FALSE;
- }
- if (retcode)
- {
- retcode = DllEntryPoint (hDllHandle, dwReason, lpreserved);
- }
}
i__leave:
__native_dllmain_reason = UINT_MAX;
}
i__leave:
__native_dllmain_reason = UINT_MAX;