Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | 3574493 Avoid hanging on exit due to use of synchronization calls in routines called by DllMain(). |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | core-8-4-branch |
Files: | files | file ages | folders |
SHA1: |
42933eb98a56005b5237f00db5d71194 |
User & Date: | dgp 2012-11-07 17:24:12 |
Context
2012-11-13
| ||
21:16 | 360894 Threads inherit floating point config from their creator thread check-in: 2a5f53e797 user: dgp tags: core-8-4-branch | |
21:03 | merge 8.4 Closed-Leaf check-in: fbae294921 user: dgp tags: bug-3567063 | |
2012-11-07
| ||
17:26 | 3574493 Avoid hanging on exit due to use of synchronization calls in routines called by DllMain(). check-in: ff93640153 user: dgp tags: core-8-5-branch | |
17:24 | 3574493 Avoid hanging on exit due to use of synchronization calls in routines called by DllMain(). check-in: 42933eb98a user: dgp tags: core-8-4-branch | |
15:28 | needed for complation with mingw-w64 (autoconf still to be run) check-in: e00aa2ec0b user: jan.nijtmans tags: core-8-4-branch | |
Changes
Changes to ChangeLog.
1 2 3 4 5 6 7 | 2012-10-03 Don Porter <[email protected]> * generic/tclIO.c: When checking for std channels being closed, compare the channel state, not the channel itself so that stacked channels do not cause trouble. 2012-08-17 Jan Nijtmans <[email protected]> | > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 | 2012-11-07 Don Porter <[email protected]> * win/tclWinSock.c: [Bug 3574493] Avoid hanging on exit due to use of synchronization calls in routines called by DllMain(). 2012-10-03 Don Porter <[email protected]> * generic/tclIO.c: When checking for std channels being closed, compare the channel state, not the channel itself so that stacked channels do not cause trouble. 2012-08-17 Jan Nijtmans <[email protected]> |
︙ | ︙ |
Changes to win/tclWinSock.c.
︙ | ︙ | |||
655 656 657 658 659 660 661 | { ThreadSpecificData *tsdPtr; tsdPtr = (ThreadSpecificData *)TclThreadDataKeyGet(&dataKey); if (tsdPtr != NULL) { if (tsdPtr->socketThread != NULL) { if (tsdPtr->hwnd != NULL) { | | | | | | | > | 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 | { ThreadSpecificData *tsdPtr; tsdPtr = (ThreadSpecificData *)TclThreadDataKeyGet(&dataKey); if (tsdPtr != NULL) { if (tsdPtr->socketThread != NULL) { if (tsdPtr->hwnd != NULL) { if (PostMessage(tsdPtr->hwnd, SOCKET_TERMINATE, 0, 0)) { /* * Wait for the thread to exit. This ensures that we are * completely cleaned up before we leave this function. */ WaitForSingleObject(tsdPtr->readyEvent, INFINITE); } tsdPtr->hwnd = NULL; } CloseHandle(tsdPtr->socketThread); tsdPtr->socketThread = NULL; } if (tsdPtr->readyEvent != NULL) { CloseHandle(tsdPtr->readyEvent); |
︙ | ︙ |