]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/threadengines/threadengine_win32.cpp
m_spanningtree Change TreeServer::GetSocket() to always return the socket that can...
[user/henk/code/inspircd.git] / src / threadengines / threadengine_win32.cpp
index 3e643c6f5aec175ec8102379d2b59f70073f23a4..529e24a294c30fe5cb00956f9f17529f7a5d3834 100644 (file)
@@ -37,7 +37,16 @@ void ThreadEngine::Start(Thread* thread)
        {
                thread->state = NULL;
                delete data;
-               throw CoreException(std::string("Unable to create new thread: ") + dlerror());
+               std::string err = "Unable to create new thread: ";
+#ifdef _WIN32
+               CHAR errdetail[100];
+               FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, 0, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), errdetail, 100, 0);
+               SetLastError(ERROR_SUCCESS);
+               err += errdetail;
+#else
+               err += dlerror();
+#endif
+               throw CoreException(err);
        }
 }
 
@@ -56,6 +65,7 @@ void ThreadData::FreeThread(Thread* thread)
 {
        thread->SetExitFlag();
        WaitForSingleObject(handle,INFINITE);
+       CloseHandle(handle);
 }
 
 class ThreadSignalSocket : public BufferedSocket