diff options
author | Bernard Normier <bernard@zeroc.com> | 2008-04-02 16:22:01 -0400 |
---|---|---|
committer | Bernard Normier <bernard@zeroc.com> | 2008-04-02 16:22:01 -0400 |
commit | 3dc96485c0c5e4410bf5212e70e817abbb72bc95 (patch) | |
tree | 97bda7128b2e1e8ba6975e1e56f07bd05085cdbe /cpp/src/Ice/DLLMain.cpp | |
parent | Fixed bug #2934 (diff) | |
parent | bug 2967 - DLLMain not correct (diff) | |
download | ice-3dc96485c0c5e4410bf5212e70e817abbb72bc95.tar.bz2 ice-3dc96485c0c5e4410bf5212e70e817abbb72bc95.tar.xz ice-3dc96485c0c5e4410bf5212e70e817abbb72bc95.zip |
Merge branch 'master' of cvs:/home/git/ice
Diffstat (limited to 'cpp/src/Ice/DLLMain.cpp')
-rw-r--r-- | cpp/src/Ice/DLLMain.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/cpp/src/Ice/DLLMain.cpp b/cpp/src/Ice/DLLMain.cpp index 125e5f799dd..7c07fef0b9a 100644 --- a/cpp/src/Ice/DLLMain.cpp +++ b/cpp/src/Ice/DLLMain.cpp @@ -23,11 +23,18 @@ DllMain(HINSTANCE hDLL, DWORD reason, LPVOID reserved) #else ice_DLL_Main(HINSTANCE hDLL, DWORD reason, LPVOID reserved) { - if(!_CRT_INIT(hDLL, reason, reserved)) + // + // During ATTACH, we must call _CRT_INIT first. + // + if(reason == DLL_PROCESS_ATTACH || reason == DLL_THREAD_ATTACH) { - return FALSE; + if(!_CRT_INIT(hDLL, reason, reserved)) + { + return FALSE; + } } #endif + if(reason == DLL_PROCESS_ATTACH) { Ice::EventLoggerI::setModuleHandle(hDLL); @@ -38,6 +45,19 @@ ice_DLL_Main(HINSTANCE hDLL, DWORD reason, LPVOID reserved) Ice::ImplicitContextI::cleanupThread(); } +#ifndef __BCPLUSPLUS__ + // + // During DETACH, we must call _CRT_INIT last. + // + if(reason == DLL_PROCESS_DETACH || reason == DLL_THREAD_DETACH) + { + if(!_CRT_INIT(hDLL, reason, reserved)) + { + return FALSE; + } + } +#endif + return TRUE; } |