From: Ondřej Surý Date: Tue, 14 Jul 2020 08:52:02 +0000 (+0200) Subject: Disable calling DllMain() on thread creation/destruction X-Git-Tag: v9.17.11~40^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4bde4f050be7365b972f8a5511138888c3367b99;p=thirdparty%2Fbind9.git Disable calling DllMain() on thread creation/destruction Disables the DLL_THREAD_ATTACH and DLL_THREAD_DETACH notifications for the specified dynamic-link library (DLL). This can reduce the size of the working set for some applications. --- diff --git a/lib/isc/win32/DLLMain.c b/lib/isc/win32/DLLMain.c index 91f14e7b009..3acfee4f467 100644 --- a/lib/isc/win32/DLLMain.c +++ b/lib/isc/win32/DLLMain.c @@ -19,27 +19,32 @@ __declspec(dllexport) BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { switch (fdwReason) { /* - * The DLL is loading due to process - * initialization or a call to LoadLibrary. + * The DLL is loading due to process initialization or a call to + * LoadLibrary. */ case DLL_PROCESS_ATTACH: - break; - - /* The attached process creates a new thread. */ - case DLL_THREAD_ATTACH: - break; - - /* The thread of the attached process terminates. */ - case DLL_THREAD_DETACH: + /* + * Disable DllMain() invocation on Thread creation/destruction + */ + DisableThreadLibraryCalls(hinstDLL); break; /* - * The DLL is unloading from a process due to - * process termination or a call to FreeLibrary. + * The DLL is unloading from a process due to process + * termination or a call to FreeLibrary. */ case DLL_PROCESS_DETACH: break; + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + /* + * Calling DllMain when attaching/detaching process has been + * disabled. + */ + INSIST(0); + break; + default: break; }