From 2c34250f43c0c06cdc3c405781eed90daf008361 Mon Sep 17 00:00:00 2001 From: daanx Date: Fri, 2 May 2025 08:55:16 -0700 Subject: [PATCH] extend override test on windows --- test/main-override-dep.cpp | 38 +++++++++++++++++++++++++++++++++++++- test/main-override.cpp | 5 +++-- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/test/main-override-dep.cpp b/test/main-override-dep.cpp index e92f6fc4..d89e3fca 100644 --- a/test/main-override-dep.cpp +++ b/test/main-override-dep.cpp @@ -1,6 +1,7 @@ // Issue #981: test overriding allocation in a DLL that is compiled independent of mimalloc. // This is imported by the `mimalloc-test-override` project. #include +#include #include "main-override-dep.h" std::string TestAllocInDll::GetString() @@ -10,6 +11,41 @@ std::string TestAllocInDll::GetString() const char* t = "test"; memcpy(test, t, 4); std::string r = test; + std::cout << "override-dep: GetString: " << r << "\n"; delete[] test; return r; -} \ No newline at end of file +} + + +class Static { +private: + void* p; +public: + Static() { + printf("override-dep: static constructor\n"); + p = malloc(64); + return; + } + ~Static() { + free(p); + printf("override-dep: static destructor\n"); + return; + } +}; + +static Static s = Static(); + + +#include + +BOOL WINAPI DllMain(HINSTANCE module, DWORD reason, LPVOID reserved) { + (void)(reserved); + (void)(module); + if (reason==DLL_PROCESS_ATTACH) { + printf("override-dep: dll attach\n"); + } + else if (reason==DLL_PROCESS_DETACH) { + printf("override-dep: dll detach\n"); + } + return TRUE; +} diff --git a/test/main-override.cpp b/test/main-override.cpp index db594acc..576f47bc 100644 --- a/test/main-override.cpp +++ b/test/main-override.cpp @@ -37,7 +37,7 @@ static void test_thread_local(); // issue #944 static void test_mixed1(); // issue #942 static void test_stl_allocators(); -#if x_WIN32 +#if _WIN32 #include "main-override-dep.h" static void test_dep(); // issue #981: test overriding in another DLL #else @@ -145,11 +145,12 @@ static bool test_stl_allocator1() { struct some_struct { int i; int j; double z; }; -#if x_WIN32 +#if _WIN32 static void test_dep() { TestAllocInDll t; std::string s = t.GetString(); + std::cout << "test_dep GetString: " << s << "\n"; } #endif