diff --git a/src/core/thread.d b/src/core/thread.d index 11b5d49708..e2c295f762 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -4786,13 +4786,14 @@ private: pstack -= reserve; *(cast(EXCEPTION_REGISTRATION*)pstack) = EXCEPTION_REGISTRATION( sehChainEnd, finalHandler ); + auto pChainEnd = pstack; push( cast(size_t) &fiber_entryPoint ); // EIP push( cast(size_t) m_ctxt.bstack - reserve ); // EBP push( 0x00000000 ); // EDI push( 0x00000000 ); // ESI push( 0x00000000 ); // EBX - push( cast(size_t) m_ctxt.bstack - reserve ); // FS:[0] + push( cast(size_t) pChainEnd ); // FS:[0] push( cast(size_t) m_ctxt.bstack ); // FS:[4] push( cast(size_t) m_ctxt.bstack - m_size ); // FS:[8] push( 0x00000000 ); // EAX @@ -5289,9 +5290,7 @@ unittest // Test exception handling inside fibers. -version (Win32) { - // broken on win32 under windows server 2012: bug 13821 -} else unittest { +unittest { enum MSG = "Test message."; string caughtMsg; (new Fiber({ @@ -5329,9 +5328,7 @@ unittest new Fiber({}).call(Fiber.Rethrow.no); } -version (Win32) { - // broken on win32 under windows server 2012: bug 13821 -} else unittest { +unittest { enum MSG = "Test message."; try