git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v11 2/2] win32: close handles of threads that have been joined

From
SGSeija Kijin via GitGitGadget <gitgitgadget@gmail.com>
Date
Dec 23, 2022, 19:19 UTC
Message-ID
<c5d2ddad166165d1ac8975ce6d06c16eb3b6b6cb.1671823177.git.gitgitgadget@gmail.com>
In-Reply-To
<pull.1406.v11.git.git.1671823177.gitgitgadget@gmail.com>
From: Seija Kijin <doremylover123@gmail.com>

After the thread terminates, the handle to the original thread should be closed.

This change makes win32_pthread_join POSIX compliant.
Signed-off-by: Seija Kijin <doremylover123@gmail.com>
---
 compat/win32/pthread.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/compat/win32/pthread.c b/compat/win32/pthread.c
index 65e15a560d5..f63f65c9dfe 100644
--- a/compat/win32/pthread.c
+++ b/compat/win32/pthread.c
@@ -41,11 +41,15 @@ int win32_pthread_join(pthread_t *thread, void **value_ptr)
 	case WAIT_OBJECT_0:
 		if (value_ptr)
 			*value_ptr = thread->arg;
+		CloseHandle(thread->handle);
 		return 0;
 	case WAIT_ABANDONED:
+		CloseHandle(thread->handle);
 		return EINVAL;
 	default:
-		return err_win_to_posix(GetLastError());
+		/* the wait failed, so do not detach */
+		errno = err_win_to_posix(GetLastError());
+		return errno;
 	}
 }
 
-- 
gitgitgadget
Previous: Seija Kijin via GitGitGadgetNext: René Scharfe
Message 28 of 41 in “win32: close handles of threads that have been joined”
  1. win32: close handles of threads that have been joinedRose via GitGitGadget, Dec 19, 2022
  2. Ævar Arnfjörð BjarmasonDec 19, 2022
  3. Johannes SixtDec 20, 2022
  4. win32: close handles of threads that have been joinedRose via GitGitGadget, Dec 20, 2022
  5. win32: close handles of threads that have been joinedRose via GitGitGadget, Dec 20, 2022
  6. 0/2 win32: close handles of threads that have been joinedRose via GitGitGadget, Dec 20, 2022
  7. 1/2 win32: close handles of threads that have been joinedSeija Kijin via GitGitGadget, Dec 20, 2022
  8. 2/2 prepSeija Kijin via GitGitGadget, Dec 20, 2022
  9. win32: close handles of threads that have been joinedRose via GitGitGadget, Dec 20, 2022
  10. Johannes SixtDec 20, 2022
  11. 0/2 win32: close handles of threads that have been joinedRose via GitGitGadget, Dec 21, 2022
  12. 1/2 win32: close handles of threads that have been joinedSeija Kijin via GitGitGadget, Dec 21, 2022
  13. 2/2 prepSeija Kijin via GitGitGadget, Dec 21, 2022
  14. 0/2 win32: close handles of threads that have been joinedRose via GitGitGadget, Dec 21, 2022
  15. 2/2 prepSeija Kijin via GitGitGadget, Dec 21, 2022
  16. 1/2 win32: close handles of threads that have been joinedSeija Kijin via GitGitGadget, Dec 21, 2022
  17. Johannes SixtDec 22, 2022
  18. win32: close handles of threads that have been joinedRose via GitGitGadget, Dec 22, 2022
  19. 0/2 win32: close handles of threads that have been joinedRose via GitGitGadget, Dec 22, 2022
  20. 2/2 prep: reformat pthread.c to fit coding guidelinesSeija Kijin via GitGitGadget, Dec 22, 2022
  21. Junio C HamanoDec 23, 2022
  22. 1/2 win32: close handles of threads that have been joinedSeija Kijin via GitGitGadget, Dec 22, 2022
  23. 0/2 win32: close handles of threads that have been joinedRose via GitGitGadget, Dec 23, 2022
  24. 1/2 win32-pthread: prepare pthread.c for change by formattingSeija Kijin via GitGitGadget, Dec 23, 2022
  25. 2/2 win32: close handles of threads that have been joinedSeija Kijin via GitGitGadget, Dec 23, 2022
  26. 0/2 win32: close handles of threads that have been joinedRose via GitGitGadget, Dec 23, 2022
  27. 1/2 win32-pthread: prepare pthread.c for change by formattingSeija Kijin via GitGitGadget, Dec 23, 2022
  28. 2/2 win32: close handles of threads that have been joinedSeija Kijin via GitGitGadget, Dec 23, 2022
  29. René ScharfeDec 24, 2022
  30. 0/2 win32: close handles of threads that have been joinedRose via GitGitGadget, Dec 25, 2022
  31. 2/2 win32: close handles of threads that have been joinedSeija Kijin via GitGitGadget, Dec 25, 2022
  32. Junio C HamanoDec 26, 2022
  33. 1/2 win32-pthread: prepare pthread.c for change by formattingSeija Kijin via GitGitGadget, Dec 25, 2022
  34. Junio C HamanoDec 26, 2022
  35. 0/2 win32: close handles of threads that have been joinedRose via GitGitGadget, Jan 3, 2023
  36. 1/2 win32: prepare pthread.c for change by formattingSeija Kijin via GitGitGadget, Jan 3, 2023
  37. 2/2 win32: close handles of threads that have been joinedSeija Kijin via GitGitGadget, Jan 3, 2023
  38. 0/2 win32: close handles of threads that have been joinedRose via GitGitGadget, Jan 5, 2023
  39. 1/2 win32: prepare pthread.c for change by formattingSeija Kijin via GitGitGadget, Jan 5, 2023
  40. 2/2 win32: close handles of threads that have been joinedSeija Kijin via GitGitGadget, Jan 5, 2023
  41. Junio C HamanoJan 6, 2023

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.